Возьмем, к примеру, эту 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;
}