将平面数据从sql转换为List <item> </item>

时间:2010-09-06 07:47:30

标签: c# sql list recursion iterator

首先,如果您觉得此问题已经提出,我很抱歉,但我似乎无法围绕这个问题,尽管这不是最困难的事情。

基本上我有一个来自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; }
    }

任何人都可以给我一些示例代码,它可能是通过列表递归迭代的行,同时在他们的位置添加项目..

提前致谢

1 个答案:

答案 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);
}