我有以下類如何做Linq Group加入自我填充兒童/父母的屬性?
public class OrderItem
{
public Guid ID { get; set; }
public Guid? ParentID { get; set; }
public IEnumerable<OrderItem> Children { get; set; }
public OrderItem Parent { get; set; }
}
我最初從數據庫和到一個數組獲取它們。
OrderItem[] arrOrderItems = ctx.Database.SqlQuery<OrderItem>(orderItemsQuery).ToArray();
現在我想使我的基本陣列仍然包含了所有的物品連接起來的類,但每個項目都有它的導航性能設置(兒童,家長)。
是否有任何提供此功能的Linq函數?
我的初始思想是做一個團體加入填補孩子,然後加入填補父母。下面我有我的示例GroupJoin代碼。我無法弄清楚如何讓groupjoin返回父對象。它試圖返回IEnumerable的< IEnumerable的< OrderItem的>>
arrOrderItems = arrOrderItems.GroupJoin(arrOrderItems,
x => x.ID, x => x.ParentID,
(parent, children) =>
parent.Children = children);
有什麼想法?
編輯:
我只是想找到一個更好的(快)的方式來做到這一點
foreach(OrderItem item in arrOrderItems)
{
if (item.ParentID.HasValue)
item.ParentOrderItem = arrOrderItems.Where(x => x.ID == item.ParentID.Value).FirstOrDefault();
item.Children = arrOrderItems.Where(x => x.ParentID.HasValue && x.ParentID.Value == item.ID).ToArray();
}
您正在使用實體框架或LINQ to SQL的位? – 2011-12-22 15:35:03
不,有一個自定義的SQL查詢,只是告訴.sqlquery什麼對象來填充數據。 – 2011-12-22 15:44:22