Я создал свою собственную древовидную структуру данных с помощью классов.Теперь я застрял с действительно основными вещами.Мне нужно сделать вывод файла с разделителями табуляции из данных в мой список <MainTreeNode>
.
Я думаю, что рекурсия это единственный путь?!
Дерево - это N-дерево, и выводпервая строка в качестве заголовка, а остальные строки являются значениями.
Дерево:
- MSG (MainTreeNode)
- MainParam (должен иметьprop NAME, не должен иметь prop VALUE)
- SubParam1 (должен иметь prop NAME, должен иметь prop VALUE)
- SubParam2 (должен иметь prop NAME, не должен иметь propЗНАЧЕНИЕ)
- SubSubParam2.1 (должен иметь имя ИМЯ, должен иметь значение ЗНАЧЕНИЕ)
и т. Д.
Или:
- Сообщение: Имя
- Param1: ValueV1 (VALUE должно, потому что у него нет детей)
- Параметр2
- Параметр2.1: ЗначениеV2
- Параметр2.2: Значение
- Параметр2.2.1: ЗначениеВ3
- Параметр2.2.2: Значение V4 ... и т. Д.
И вывод должен быть таким (первая строка - заголовок):
Param1|Param2/Param2.1|Param2/Param2.2/Param2.2.1|Param2/Param2.2/Param2.2.2
ValueV1|ValueV2|ValueV3|ValueV4
...
Так что мне нужно, вероятно, List для заголовка и для значений, но я не знаю, как реализоватьчто рекурсивным способом (или любым другим).
Часть незавершенного кода:
public void PrintToTabFile(List<Message> messages, List<string> parameters)
{
foreach (string s in parameters)
{
using (StreamWriter streamWriter = new StreamWriter(@"C:\temp\" + s + ".xls"))
{
streamWriter.Write("No.\tMsgName\tMsgData1\tMsgData2\tMsgData3");
var msg = messages.Where(x => x.Parameters.Where(p => p.ParameterName == s).Count() == 1);
List<string> headers = new List<string>();
List<string> values= new List<string>();
//... Stuck!!!
}
}
}
private void Recursion(Parameter parameter, List<string> headers, List<string> values)
{
if (parameter.SubParameters.Count == 0)
{
int index = headers.IndexOf(parameter.ParameterName);
values[index] = parameter.ParameterValue;
}
else
{
foreach (Parameter p in parameter.SubParameters)
{
Recursion(p, headers, values);
//and Stuck Probably here or before recursion call
}
}
}