Pregunta

Tengo una lista de Foo.

Foo tiene una propiedad de cadena llamada Bar.

me gustaría usar LINQ para obtener una cadena [] de distinto valores para Foo.Bar en la lista de Foo.

¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Yo iría lambdas...mucho mejor

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

Funciona igual que lo que publicó @lassevk.

También agregaría que es posible que desee evitar la conversión a una matriz hasta el último minuto.

LINQ realiza algunas optimizaciones detrás de escena, las consultas permanecen en su forma de consulta hasta que se necesiten explícitamente.Por lo tanto, es posible que desee incorporar primero todo lo que necesita en la consulta para que se aplique cualquier optimización posible por completo.

Por evaluación me refiero a pedir algo que requiera explícitamente una evaluación como "Count()" o "ToArray()", etc.

Otros consejos

Esto debería funcionar si deseas utilizar el patrón fluido:

string[] arrayStrings = fooList.Select(a => a.Bar).Distinct().ToArray();

Prueba esto:

var distinctFooBars = (from foo in foos
                       select foo.Bar).Distinct().ToArray();

¿No deberías poder hacer algo como:

var strings = (from a in fooList select a.Bar).Distinct();
string[] array = strings.ToArray();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top