これが私が作ったクラスです:
public class ItemTree
{
public Int32 id { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public String text { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public List<ItemTree> item { get; set; }
public int parentId { get; set; }
}
そして、これが私がそれを使用する方法です:
var tree = new ItemTree();
tree.id = 0;
tree.text = "sometext";
tree.item = new List<ItemTree>();
foreach (...)
{
if (tree.item.Count == 0)
{
tree.item.Add(new ItemTree
{
id = my_id,
text = my_name,
item = new List<ItemTree>(),
parentId = my_par
});
}
else
{
tree.item.Where(x => x.id == my_par)
.Select(x => x.item)
.First()
.Add(new ItemTree
{
id = my_id,
text = my_name,
item = new List<ItemTree>(),
parentId = my_par
});
}
}
そして、Where 句のある行でクラッシュします。クラッシュする理由は次のとおりです。ツリーにはアイテムのリストを持つアイテムが1つあり、クエリはツリーの最初のアイテムのみをチェックし、その子はチェックしません。
ツリーの深さ全体を検索してそこにアイテムを追加する方法は?