Linqを使用して親と子のグループにオブジェクトをソートし、各オブジェクトがparentIdに関連付けられている13883個のオブジェクトのやや大きなリストからツリーを作成しようとしています。一緒にlinqを使用して子供にリストをソートする
var sortedList = marketItems.GroupBy(p => p.parentId).Select(grp => grp.ToList()).ToList();
を使用しますが、これは唯一のグループに分類し、私はまだLINQと流暢じゃないと正しく子供をマッピングする方法を見つけ出す傾けます。 null ParentGroupはツリーの最上位レベルです。 Linqの経験が豊富な方なら、llistを正しくグループ化する方法についていくつかのアイデアを提供することができます。
public JsonResult GetJsTree3Data()
{
var marketItems = new List<JsTree3Node>();
var itemList = new List<JsTree3Node>();
foreach (var group in GenerateGroups(connString))
{
var node = JsTree3Node.NewNode(group.id_str);
node.text = group.name;
node.state = new State(false, false, false);
node.parentId = group.marketParentGroup;
marketItems.Add(node);
}
foreach (var group in GenerateItems(connString))
{
var node = JsTree3Node.NewNode(group.id_str);
node.text = group.name;
node.state = new State(false, false, false);
node.parentId = group.marketParentGroup;
marketItems.Add(node);
}
// Create our root node and ensure it is opened
var root = new JsTree3Node()
{
id = "0",
text = "Market Items",
state = new State(true, false, false)
};
var sortedList = marketItems.GroupBy(u => u.parentId).Select(grp => grp.ToList()).ToList();
root.children = sortedList;
return Json(root, JsonRequestBehavior.AllowGet);
}
私はachiveをしようとしている最終的な結果は、ユーザーが選択できる項目のツリーです。木の唯一のレベルがある子供たちがソートされたリストに
あなたがしていることがわかりません。親グループ2とは何ですか?たとえば、アイテムID 2157(構造変更、親グループ2)の親となっているアイテムなどの識別子がありますか?あなたのデータには私がそれを導き出すことができる何も表示されません。 –
最終目標は、親子ペアのリストを出すことです。 – Abion47
各親の下にある子のリストを別々にソートしたいですか?彼らは名前で並べ替えるべきですか? –