¿Cómo obtener una serie de valores de propiedades distintos de las listas de memoria?
-
09-06-2019 - |
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?
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();