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);
}
}
}