Возьмем эту глубинную структуру n-уровня, например:
public class SomeItem
{
public Guid ID { get;set; }
public string Name { get; set; }
public bool HasChildren { get;set; }
public IEnumerable<SomeItem> Children { get; set; }
}
Если я ищу, чтобы получить конкретный элемент по идентификатору (в любом месте структуры), есть ли какая-то LINQ доброта, которую я могу использовать, чтобы легко получить его в одном выражении или мне нужно использовать некоторую рекурсивную функцию, как показано ниже:
private SomeItem GetSomeItem(IEnumerable<SomeItem> items, Guid ID)
{
foreach (var item in items)
{
if (item.ID == ID)
{
return item;
}
else if (item.HasChildren)
{
return GetSomeItem(item.Children, ID);
}
}
return null;
}