C#:Obtendo a chave de menor valor em um Enum bit a bit
-
23-09-2019 - |
Pergunta
Eu tenho enum assim
[Flags]
public enum Key
{
None = 0,
A = 1,
B = 2,
C = 4
}
Eu tenho o seguinte
Key k1 = Key.A | Key.B | Key.C;
Quero obter a chave em k1 que tenha o valor mais baixo.Como eu posso fazer isso?
Exemplo:
Key k1 = Key.A | Key.B | Key.C; // I want a
Key k2 = Key.B | Key.C; // I want b
Key k3 = Key.A | Key.C; // I want a
Solução
Keys key = Keys.b | Keys.c;
var lowest = Enum.GetValues(typeof(Keys))
.Cast<Keys>()
.OrderBy(x => x)
.FirstOrDefault(x => key.HasFlag(x));
Versão um pouco mais eficiente e .NET 4.0 do método LINQ.
Outras dicas
Certifique-se de que a conta tenha as seguintes permissões
- alterações do diretório de replicador
--replicando o diretório muda tudo
-replicando alterações do diretório no conjunto filtrado
sincronização de replicação
http://naimmurati.wordpress.com / 2012/05/29 / User-Profiles-Synchronization-Job-Not-Synchronizing /
Keys key = Keys.b | Keys.c;
var lowest = Enum.GetValues(typeof(Keys))
.OfType<Keys>()
.Where(x => (x & key) != 0)
.OrderBy(x => x)
.DefaultIfEmpty((Keys)0);
Console.WriteLine(lowest);
Se você tiver apenas 3 valores na enumeração, provavelmente o mais rápido e fácil é verificá -los um por um. Para uma solução geral, no entanto, você pode tentar converter o valor de k1
Para inteiro, encontre a maior potência de 2 que o divide e converta -o de volta ao valor do enum das teclas.
- Obtenha uma lista de todos os valores na enumeração
- Mapeie esses valores para algum tipo de tipo de dados comparável
- Compare todos os valores e acompanhe o mais baixo
- Converter o mais baixo de volta ao tipo de enumeração
Você pode usar o BCS para se conectar ao sistema de arquivos e mostrar os dados como ele é armazenado no SharePoint.
.Serviços de conectividade de negócios, que permite que os usuários leiam e escrevam dados de sistemas externos - através de serviços da Web, bancos de dados e Microsoft .NET Framework Conjuntos
Aqui estão alguns links úteis para ajudá-lo a caminho
Criando conectores de serviços de conectividade de negócios personalizados usando o SharePoint Server 2010 amostra de código: myfileconnector conector de indexação personalizada
O código que você publicou originalmente não faz sentido: a+b+c não é prefixado por um nome de tipo, para que eles não se referam aos nomes de enum aos quais parecem se referir.
Além disso, se você usar um pouco e combinar bandeiras, o resultado conterá todas as bandeiras em tudo Paramters - neste caso, nenhum.