Выражение вложенного списка Linq - PullRequest
11 голосов
/ 27 мая 2011

пожалуйста, мне нужна ваша помощь с выражением 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 должно вернуть меня: подпапка «Личная» (объект).

Пожалуйста, помогите мне, из-за двух вложенных списков, у меня возникли проблемы с однимэто будет легко.

Заранее спасибо.

Ответы [ 2 ]

14 голосов
/ 27 мая 2011
folders
    .SelectMany(s => s.SubFolders)
    .FirstOrDefault(s => s.Documents.Any(d => d.Name == "Resume"));

Я снимаю с бедра здесь, но я думаю, что должно работать ....

13 голосов
/ 27 мая 2011

Это просто:

var folders = ...;

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

Подумайте LINQ!

...