У меня есть приложение, которое обновляет данные в CSV. Что я пытаюсь добавить, так это то, что если «имя» отсутствует в CSV, добавьте его. Я попытался изменить while
на if/then
, но это не дало мне никаких результатов, просто пустая строка в CSV.
Код:
using (StreamReader reader = new StreamReader(path))
{
String line;
while ((line = reader.ReadLine()) != null)
{
if (line.Split(',')[0].Equals("newName"))
{
String[] split = line.Split(',');
split[1] = tPoints.ToString();
line = String.Join(",", split);
}
lines.Add(line);
}
}
using (StreamWriter writer = new StreamWriter(path))
{
foreach (String line in lines)
writer.WriteLine(line);
}
Текущие данные CSV:
name,734937
Если элемент НЕ найден, я пытаюсь добавить новую строку. Таким образом, ожидаемый результат будет примерно таким:
name,734937
newName,0
@JoelCoehoorn tPoints — это просто данные, которые я добавляю в CSV. Да, текущий код только в том случае, если «имя» находится в CSV. Мой вопрос в том, как я могу добавить его, если его НЕТ в CSV.
В любом ряду? Опять же: выборочные данные и результат.
@JoelCoehoorn, я обновил пост, чтобы узнать, что вы ищете.
Вы можете попробовать что-то вроде этого:
bool termFound = false;
string searchTerm = "newName";
var lines = new List<string>();
using (StreamReader reader = new StreamReader("input.csv"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
lines.Add(line);
if (line.Split(',')[0].Equals(searchTerm))
termFound = true;
}
}
using (StreamWriter writer = new StreamWriter("output.csv"))
{
foreach (string line in lines)
writer.WriteLine(line);
if (termFound == false)
writer.WriteLine($"{searchTerm},0");
}
Большое спасибо, отлично сработало!!
Непонятно, что вы пытаетесь здесь сделать. Как подходит
tPoints
? И вы говорите, что хотите этого, если"name"
нет в данных CSV, но это устанавливает значение, когда оно ЕСТЬ в данных CSV. Попробуйте опубликовать короткое сообщение, кроме примера данных и желаемого результата.