прочитать CSV-файл и вернуть отступ меню c# - PullRequest
0 голосов
/ 23 апреля 2020


Мне нужно создать навигационное меню с отступом, используя приведенные ниже данные из файла .csv:

ID; MenuName; ParentID; isHidden; LinkURL 1; Компания; NULL; Ложные; / компании 2; О нас; 1; Ложь; / компания / aboutus 3; Миссия; 1; Ложные; / компании / Миссия 4, команда; 2; Ложные; / компания / ABOUTUS / команда 5; Клиент 2; 10; Ложь; / reference / client2 6; Клиент 1; 10; Ложь; / reference / client1 7; Клиент 4; 10; Верно; / reference / client4 8; Клиент 5; 10; Верно; / reference / client5 10; References; NULL; False; / reference

Используя эти данные, я должен разработать приложение, которое будет анализировать файл и представлять содержимое в консоли, как показано ниже:

. Компания .... Насчет нас ....... Команда .... Миссия , Ссылки .... Клиент 1 .... Клиент 2

Пункты меню должны иметь отступ (в зависимости от родителя), скрытые элементы (isHidden == true) не должны отображаться, а элементы должны располагаться в алфавитном порядке. Пока я пытался:

using (StreamReader sr = new StreamReader(@"file.csv"))
        {
            // Read the stream to a string, and write the string to the console.
            string [] lines = sr.ReadToEnd().Split(/*';', */'\n');                
            for (int i = 1; i < lines.Length; i++)
            {                    
                Console.WriteLine($"String no {i} is : {lines[i-1]}");
            }                
        }

С этим я получаю строки, но я застрял после этого. Я новичок в кодировании, поэтому любая помощь будет оценена :)

1 Ответ

0 голосов
/ 24 апреля 2020

вот некоторый код, который должен помочь вам выйти.

Рабочий пример:

https://dotnetfiddle.net/L37Gjr

Сначала он анализирует данные в отдельный объект. Затем он используется для построения m-арного дерева или иерархической структуры связанных узлов. (узел имеет ссылку на 0 или более дочерних элементов).

https://en.wikipedia.org/wiki/M-ary_tree

Затем используется обход дерева (используйте Google, если вам нужно узнать больше) вставьте и распечатайте вывод, однако все еще что-то не так. теперь для печати используется обход порядка уровней, однако возникает ошибка:

Found root:1 - Company
Found root:10 - References
-------------------
1 - Company
    2 - About Us
    3 - Mission
        4 - Team
10 - References
    6 - Client 1
    5 - Client 2

Как видите, он печатает 4 - Team на неправильном уровне. Я оставлю это вам, чтобы исправить это (потому что у меня не хватило времени), и если нет, надеюсь, я дал вам множество идей для go и исследования самостоятельно.

...