2009-08-04 7 views
5

Tengo un List de objetos que contienen una matriz de cadenas como una de sus propiedades. Quiero obtener una matriz de cadenas distinta que contenga todos los valores.LINQ - Seleccionar todos los elementos secundarios de una jerarquía de objetos

Mi objeto se parece a esto:

public class Zoo { 
    string Name { get; set;} 
    string[] Animals { get; set;} 
} 

Algunos zoológicos pueden tener sólo un animal, algunos pueden tener muchos. ¿Cuál sería la expresión más simple de Lambda o la consulta LINQ para obtener una lista única de todos los animales en todos los zoos en List<Zoo>?

Respuesta

12
var query = zoos.SelectMany(zoo => zoo.Animals) 
       .Distinct(); 

O si usted es un ventilador de expresión de consulta (que no sería por algo este sencillo):

var query = (from zoo in zoos 
      from animal in zoo.Animals 
      select animal).Distinct(); 
+0

Gracias, Jon. Typo de mi parte. –

+0

¿Dónde estaba el error tipográfico? Debo haberlo perdido :) –

+4

El error tipográfico estaba en mi aplicación. No puedo esperar hasta que aparezca el complemento de StackOverflow para Visual Studio para que pueda arreglar mis aplicaciones mientras trabajo. :-) –

Cuestiones relacionadas