Добавить данные в CSV, если строка не найдена

У меня есть приложение, которое обновляет данные в 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 

Непонятно, что вы пытаетесь здесь сделать. Как подходит tPoints? И вы говорите, что хотите этого, если "name" нет в данных CSV, но это устанавливает значение, когда оно ЕСТЬ в данных CSV. Попробуйте опубликовать короткое сообщение, кроме примера данных и желаемого результата.

Joel Coehoorn 17.05.2022 23:35

@JoelCoehoorn tPoints — это просто данные, которые я добавляю в CSV. Да, текущий код только в том случае, если «имя» находится в CSV. Мой вопрос в том, как я могу добавить его, если его НЕТ в CSV.

ButterBiscuit 17.05.2022 23:39

В любом ряду? Опять же: выборочные данные и результат.

Joel Coehoorn 17.05.2022 23:41

@JoelCoehoorn, я обновил пост, чтобы узнать, что вы ищете.

ButterBiscuit 17.05.2022 23:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать что-то вроде этого:

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

Большое спасибо, отлично сработало!!

ButterBiscuit 18.05.2022 00:35

Другие вопросы по теме