Не получается добавлять элементы в список | C#
Код должен парсить txt файл и выдавать List<List<List<string>>>
Пример как должен работать код:
Файл:
Andrey:Vaulin:Andrey:Aleksandrov:Andrey:Ivanov
Vasiliy:Nikolayev:Vasiliy:Bogdanov:Vasiliy:Naumov
Aleksey:Petrov:Aleksey:Smirnov:Aleksey:Lebedev
Какой список должен выдать код:
(Список - { } )
{
{ {Andrey, Vaulin}, {Andrey, Aleksandrov}, {Andrey, Ivanov} },
{ {Vasiliy, Nikolayev}, {Vasiliy, Bogdanov}, {Vasiliy, Naumov} },
{ {Aleksey, Petrov}, {Aleksey, Smirnov}, {Aleksey, Lebedev} },
}
Код:
StreamReader sr = new StreamReader($"somename.txt");
string txt = sr.ReadToEnd();
string[] lines = txt.Split('\n');
foreach (string line in lines)
{
List<List<List<string>>> namedata;
List<string> lps = line.Split(':').ToList();
List<List<string>> lineparse = lps
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / 2)
.Select(x => x.Select(v => v.Value)
.ToList()).ToList();
namedata.Add(lineparse);
}
Проблема заключается в том что при:
namedata.Add(lineacc);
Появляется ошибка:
Use of unassigned local variable 'namedata'
Как сделать так чтобы код работал ?
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
List<List<List<string>>> namedata;
Так вы только описали тип переменной, но ничего ей не присвоили. Переменные нужно инициализировать перед использованием. И в этом случае можно не писать тип переменной, рекомендуется использовать var для упрощения кода, компилятор сам догадается про тип по правой части присваивания:
var namedata = new List<List<List<string>>>();
Автор решения: 110010100
→ Ссылка
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace TEST
{
class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader($"somename.txt");
string txt = sr.ReadToEnd();
string[] lines = txt.Split('\n');
sr.Close();
List < List <List<string>>> namedata =new List<List<List<string>>>();
foreach (string line in lines)
{
List<string> lps = line.Split(':').ToList();
List<List<string>> lineparse = lps
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / 2)
.Select(x => x.Select(v => v.Value)
.ToList()).ToList();
namedata.Add(lineparse);
}
}
}
}