Не получается добавлять элементы в список | 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);
            }
        }
    }
}
→ Ссылка