Преобразование плоских данных из sql в список <Item> - PullRequest
1 голос
/ 06 сентября 2010

Прежде всего, я извиняюсь, если вы чувствуете, что этот вопрос уже поднимался, но я, похоже, не могу обдумать этот вопрос, хотя это не самая трудная вещь для выполнения ..

В основном у меня есть результат запроса из sql, который содержит несколько строк, существующих из:

id, parentid, name, description, 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 Ответ

3 голосов
/ 06 сентября 2010

Предполагая, что вы хотите построить дерево и не получить данные не по порядку, вы сможете поддерживать поиск по ходу, т. Е.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...