首先,如果您觉得此问题已经提出,我很抱歉,但我似乎无法围绕这个问题,尽管这不是最困难的事情。
基本上我有一个来自sql的查询结果,它包含几行,存在于:
之外id, parentid, name, description, level
level是被视为以正整数表示的树结构的项目的深度。
现在我想将这个平面数据解析/转换为“List<Item> mySqlData
”,其中Item包含如下类定义
public class Item
{
public string Id { get; set; }
public string ParentId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string List<Item> { get; set; }
}
任何人都可以给我一些示例代码,它可能是通过列表递归迭代的行,同时在他们的位置添加项目..
提前致谢
答案 0 :(得分:3)
假设您想要构建树,并且不会使数据无序,您应该能够保持查找,即
。var idLookup = new Dictionary<int, Item>();
var roots = new List<Item>();
foreach([row]) {
Item newRow = [read basic row];
int? parentId = [read parentid]
Item parent;
if(parentId != null && idLookup.TryGetValue(parentId.Value, out parent)) {
parent.Items.Add(newRow);
} else {
roots.Add(newRow);
}
idLookup.Add(newRow.Id, newRow);
}