StreamReader для нескольких списков

Я пытаюсь использовать StreamReader, чтобы разбить данные из текстового файла на несколько списков. До сих пор я был в состоянии собрать все данные в один список, но следующий шаг моего проекта требует разделения данных, и я думаю, что понимаю списки лучше, чем массивы. Я предпринял попытку найти похожую проблему, но, поскольку я новичок, большая часть того, что я обнаружил, сбивает меня с толку. Мне удалось только успешно выполнить следующее:

StreamReader file = new StreamReader(openFileDialog1.FileName);
string data;
while (!file.EndOfStream)
{
    data = file.ReadLine();
    listBox1.Items.Add(data);
}
file.Close();

Мои данные в моем файле.txt разбиты на три блока:

blue
david
8042
red
joseph
7042

Я не могу изменить формат данных, поэтому я пытался закодировать его таким образом, чтобы

if (blue)
    listBox1.Items.Add(david);
    listBox2.Items.Add(8042);
else if (red)
    listBox3.Items.Add(joseph);
    listBox4.Items.Add(7042);

и т.д. У меня есть только два цвета для работы, но много данных для каждого из этих цветов. Моя проблема в том, что я новичок в кодировании и не могу применить основы, которые я научился делать.

Какие строки кода мне не хватает, чтобы добавить строку под строкой в ​​список в то время как она StreamReads? Нужно ли использовать

int counter = 0;

и увеличьте его на 1 или 2, чтобы получить эти строки, или я слишком много думаю?

Большое спасибо за любую помощь. Я чувствую, что упускаю что-то очень простое, что мне еще предстоит понять.

1 ответ

Решение

Одним из возможных выходов является чтение трех строк (то есть всего блока) вместо одной:

  using (StreamReader file = new StreamReader(openFileDialog1.FileName)) {
    while (!file.EndOfStream) {
      string color = file.ReadLine();
      string name = file.ReadLine();
      string number = file.ReadLine();

      if (color == "blue") {
        listBox1.Items.Add(name);
        listBox2.Items.Add(number);
      }
      else if (color == "red") {
        listBox3.Items.Add(name);
        listBox4.Items.Add(number);
      }
    }  
  }
Другие вопросы по тегам