2011-05-26 55 views
7

favor necesito su ayuda con una expresión LINQ: objetosLINQ expresión lista anidada

He anidados con listas, esta es la forma en la jerarquía principal objeto se parece a (cada guión es un atributo de la subclase):

Folder 
-name 
-List<Subfolder> Subfolders 
       -name 
       -List<Document> Documents 
           -name 
           -key 

Tener esta jerarquía de objetos, tengo un nombre de documento, y quiero buscar y volver a su carpeta principal (subcarpeta)

Ejemplo:

Folder 
    -name: Customer 
    -List<Subfolder> Subfolders 
        -name: Personal 
        -List<Document> Documents 
            -name: Resume 
            -key : 1 

Si dije: "Resume", la expresión linq debería devolverme: la subcarpeta "Personal" (el objeto).

Por favor, ayúdeme, debido a las dos listas anidadas que estoy teniendo problemas, con uno será fácil.

Gracias de antemano.

Respuesta

10
folders 
    .SelectMany(s => s.SubFolders) 
    .FirstOrDefault(s => s.Documents.Any(d => d.Name == "Resume")); 

estoy disparar sin apuntar aquí, pero creo que debe trabajo ....

10

Eso es fácil:

var folders = ...; 

var subfolders = 
    from folder in folders 
    from subfolder in folder.Subfolders 
    where subfolder.Documents.Any(d => d.Name == "Resume") 
    select subfolder; 

Piense LINQ!

Cuestiones relacionadas