Nano Hash - криптовалюты, майнинг, программирование

Перебор значений списка в С# и сохранение их в CSV

Я делаю что-то неправильно здесь, и, возможно, вы могли бы помочь.

Чего я пытаюсь достичь, так это:

  1. Прочитайте файл CSV (только одна строка, на основе идентификатора) и сопоставьте значения свойств с объектом.
  2. Обновите значения объекта.
  3. Запишите обновленные значения обратно в файл CSV.

Я могу выполнить первый и второй шаг.

Например, вот как я определяю объект, который сопоставляется с полями CSV:

    public string Property1 { get; set; } = string.Empty;
    public string Property2 { get; set; } = string.Empty; 

    public static CSVData ReadFromCSV(string line)
    {
        string[] values = line.Split(';');
        CSVData csvValues = new CSVData();

        csvValues.Property1 = values[0];
        csvValues.Property2 = values[1];

        return csvValues;
    }

Затем я вызываю ReadFromCSVMethod следующим образом:

id = "123456";

var csvLine = File.ReadAllLines("C:\\test.csv")
             .Skip(1)
             .Select(line => CSVData.ReadFromCSV(line))
             .Where(i => i.ID == id)
             .ToList();

// update values
csvLine[0].Property1 = "foo";
csvLine[1].Property2 = "bar;

Я вижу обновленные значения в csvLine, когда смотрю на них.

Наконец, я пытаюсь пройтись по списку (csvList), взять значения и поставить точку с запятой между этими значениями:

var sb = new StringBuilder();

foreach (var item in csvList)
{
   sb.Append(item);
}

Но тут я сталкиваюсь с проблемой. Когда я пытаюсь увидеть, что находится внутри StringBuilder, все, что я получаю, это имя объекта (CSVProcessor.CSVData), а не значения свойств:

var result = sb.ToString();

Почему это происходит?

Идея состоит в том, чтобы сформировать строку (новую строку), а затем сохранить ее в CSV.

01.04.2020

  • Можете ли вы опубликовать свой код полностью? Трудно понять, что здесь не так. 01.04.2020
  • Мне непонятно, откуда csvList. 01.04.2020

Ответы:


1

Это происходит потому, что StringBuilder использует метод ToString вашего объекта для преобразования его в строку. По умолчанию ToString (унаследовано от object) возвращает имя типа.

Вы должны создать строку, разделенную точкой с запятой, например. с:

sb.Append(item.Property1).Append(';').Append(item.Property2);

Вы также можете переопределить ToString в классе CSVData:

public override string ToString()
{
    return Property1 + ";" + Property2;
}

А затем используйте

Append(item);
01.04.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..