#c# #linq #lambda #linq-to-objects
#c# #linq #лямбда #linq-to-objects (привязка к объектам)
Вопрос:
пожалуйста, мне нужна ваша помощь с выражением 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» (объект).
Пожалуйста, помогите мне, из-за двух вложенных списков у меня проблемы, с одним это будет легко.
Заранее спасибо.
Ответ №1:
folders
.SelectMany(s => s.SubFolders)
.FirstOrDefault(s => s.Documents.Any(d => d.Name == "Resume"));
Я здесь начинаю с нуля, но я думаю, что это должно сработать….
Ответ №2:
Это просто:
var folders = ...;
var subfolders =
from folder in folders
from subfolder in folder.Subfolders
where subfolder.Documents.Any(d => d.Name == "Resume")
select subfolder;
Подумайте о LINQ!