は、私が最初にデータベースから、配列にそれらすべてをフェッチLinq GroupJoinを子/親プロパティを満たすために自己で行うにはどうすればいいですか?
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をやっていて、次に親を満たすためにJoinをしていました。私は以下のサンプルGroupJoinコードを持っています。私はどのようにグループの親オブジェクトを返すグループを持っているか把握することができませんでした。任意の考えIEnumerableを< IEnumerableを<のOrderItem>>
arrOrderItems = arrOrderItems.GroupJoin(arrOrderItems,
x => x.ID, x => x.ParentID,
(parent, children) =>
parent.Children = children);
を返すようにしようとしていますか?
編集:私はちょうどGroupJoin内部の子配列を割り当てることは非常に良い練習があることを、この
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();
}
のような割り当てを行うコードのビットを分離することだと思うあなたは、SQLにEntity Frameworkのか、LINQを使用していますか? –
いいえ、カスタムSQLクエリを持って、単にデータを入力するオブジェクトを.sqlqueryに伝えます。 –