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?

Foi útil?

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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top