Linq嵌套列表表达式

问题描述 投票:11回答:2

我需要你对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表达式应该返回我:子文件夹“Personal”(对象)。

请帮助我,因为有两个嵌套的列表我遇到了麻烦,一个很容易。

提前致谢。

c# linq lambda linq-to-objects
2个回答
14
投票
folders
    .SelectMany(s => s.SubFolders)
    .FirstOrDefault(s => s.Documents.Any(d => d.Name == "Resume"));

我在这里拍摄时尚,但我认为应该有效......


13
投票

这很简单:

var folders = ...;

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

想想LINQ吧!

© www.soinside.com 2019 - 2024. All rights reserved.