我正在尝试使用LINQ填充Parent和Children,我的代码如下所示:
var ds = myDAL.GetDataSet("mySP");
var Parent = ds.Tables[0];
var Children = ds.Tables[1];
var ParentChildren = from p in Parent.AsEnumerable()
select new
{
Id = p.Field<int>("Id"),
Name = p.Field<string>("Name"),
Children =
( from c in Children.AsEnumerable()
where c.Field<int>("ParentId") = p.Field<int>("Id")
select new
{
Id = c.Field<int>("Id"),
Name = c.Field<string>("Name")
}
)
};
我担心性能问题,因为我假设它会一次又一次地运行嵌套查询,所以如果我有1000个父项,嵌套查询会运行1000次吗?
1条答案
按热度按时间oo7oh9g91#
首先使用ToLookup按父ID对子项进行分组是明智的。这是一个
O(n log n)
操作,在该集合中进行查找也是一个O(1)
操作,因此可以避免当前查询的O(n²)
复杂性行为。