Como obter uma matriz de distintos valores de propriedade em listas de memória?
-
09-06-2019 - |
Pergunta
Eu tenho uma Lista de Foo.
Foo tem uma propriedade de seqüência de caracteres chamado Bar.
Eu gostaria de usar LINQ para obter uma seqüência de[] de distintos valores para o Foo.Bar na Lista de Foo.
Como posso fazer isso?
Solução
Eu iria lambdas...wayyy melhor
var bars = Foos.Select(f => f.Bar).Distinct().ToArray();
funciona da mesma forma que @lassevk postado.
Eu gostaria também de acrescentar que você pode querer manter a conversão para uma matriz, até o último minuto.
LINQ faz algumas otimizações nos bastidores, consultas ficar no seu formulário de consulta até explicitamente necessário.Então você pode querer construir tudo o que você precisa em primeiro a consulta para qualquer possível otimização é aplicada completamente.
Pela avaliação significa pedindo algo que exige explicitamente a avaliação como "Count()" ou "ToArray ()", etc.
Outras dicas
Isso deve funcionar se você deseja usar o fluente padrão:
string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();
Tente isso:
var distinctFooBars = (from foo in foos
select foo.Bar).Distinct().ToArray();
Você não deveria ser capaz de fazer algo como:
var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();