2011-05-26 134 views
7

請我需要一個LINQ表達你的幫助:用列表LINQ的嵌套列表表達

我嵌套的對象,這是主要的對象層次的樣子(每一劃線是子類的屬性附加傷害):

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

有對象的這種層次結構,我有一個文件的名字,我想尋找它返回它的父文件夾(子文件夾)

例子:

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

如果我說:「恢復」,linq表達式應該返回我:子文件夾「個人」(對象)。

請幫助我,因爲有兩個嵌套列表,我遇到了麻煩,一個很容易。

在此先感謝。

回答

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

我從這裏臀部拍攝,但我認爲應該工作 ....

10

這很簡單:

var folders = ...; 

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

想想LINQ!