我使用LINQ從存儲過程調用中檢索到的對象集合中構建對象的樹形結構。Linq將元素從一個集合中移除到另一個集合中
我想知道,如果
一)有什麼辦法可以去除從一個集合的元素到一個新的集合
b)如居然有任何一點性能明智的在做這個
我的代碼看起來是像這樣:
class MyEntity
{
int ID { get; set; }
int? ParentID { get; set; }
string Name { get; set; }
List<MyEntity> children = new List<MyEntity>();
List<MyEntity> Children { get { return children; } }
}
List<MyEntity> initialCollection = //get stuff from DB
List<MyEntity> rootElements = (from e in initialCollection
where e.ParentID == null
select e).ToList();
List<MyEntity> childElements = (from e in initialCollection
where e.ParentID != null
select e).ToList();
foreach(MyElement e in rootElements)
e.Children.AddRange((from c in childElements
where c.ParentID == e.ID
select c).ToList());
//do some more recursion
所以基本上;有沒有辦法做選擇語句,我真的從initialCollection
刪除元素,因爲我選擇它們。這個想法是在遞歸構建我的樹時減少搜索元素的數量。這樣做實際上是否會有任何好處,或者是從一個集合中刪除元素並添加到另一個集合的開銷太大?
輝煌,非常乾淨的解決方案。乾杯。 – 2009-08-21 13:55:31