【发布时间】:2011-06-16 09:37:22
【问题描述】:
我们以这个 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; }
}
如果我想通过 ID(结构中的任何位置)获取特定项目,是否有一些 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;
}
【问题讨论】:
-
你真的需要 HasChildren 属性吗?
-
不是真的,只是一个帮手,所以它读起来更好:) - Children.Count > 0
-
@The_Butcher Children.Any() :)