Datarow в CSV строку C #

Есть ли какая-либо форма оператора, которая преобразует строку данных в строку CSV, чтобы ее можно было записать в файл .csv? (с промежуточными ступенями или без них)


person Dashzapp    schedule 08.03.2012    source источник
comment
Вы смотрели на этот вопрос Написание файла CSV в .net (в частности, этот ответ), между этим и эти примеры Linq to DataSets, вы, вероятно, могли бы написать экспорт менее чем за 10 строк кода.   -  person R0MANARMY    schedule 08.03.2012


Ответы (4)


Быстрый поиск в Google показал это: http://www.rcs-solutions.com/blog/2009/01/15/ConvertDataTableToCSVViaExtensionMethod.aspx

Это немного устарело. Нет собственного способа сделать это, поэтому вам нужно будет либо перебирать данные, используя конструкции цикла, но я бы рекомендовал использовать методы LINQ, так как это будет намного чище.

person ctorx    schedule 08.03.2012
comment
Чтение кажется весьма многообещающим - person Dashzapp; 08.03.2012
comment
Ссылка не работает. - person Jay Elston; 01.11.2017

Попробуйте использовать следующий код:

StringBuilder sb = new StringBuilder(); 

var columnNames = dt.Columns.Cast<DataColumn>().Select(column =>     column.ColumnName).ToArray();
sb.AppendLine(string.Join(",", columnNames));

foreach (DataRow row in dt.Rows)
{
  var fields = row.ItemArray.Select(field => field.ToString()).ToArray();
  sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("test.csv", sb.ToString());
person Community    schedule 08.03.2012
comment
Где у тебя проблема ???? Не могли бы вы объяснить мне, где у вас проблема ???? - person ; 08.03.2012
comment
Я все еще тестирую, не надо в них бесконечных вопросительных знаков! Я получаю ошибки в var columnnames = dt.columns ‹- и dt.Rows‹ - - person Dashzapp; 08.03.2012
comment
Вы что-то импортировали из класса System? - person Dashzapp; 08.03.2012
comment
Вы говорите о пространствах имен? - person ; 08.03.2012
comment
Да, именно так, позвольте мне опубликовать ошибку: Ошибка 2 «System.Data.DataSet» не содержит определения для «Rows» и не может быть найден метод расширения «Rows», принимающий первый аргумент типа «System.Data.DataSet» (вам не хватает директивы using или ссылки на сборку?) Другой точно такой же, только с использованием столбцов вместо строк - person Dashzapp; 08.03.2012
comment
позвольте нам продолжить обсуждение в чате - person ; 08.03.2012

Ниже работает для меня.

foreach (DataRow row in rows)
{
    string line = "";
    for (int i = 0; i < row.ItemArray.Length; i++)
    {
         line += row[i] + ",";  
    }
    line = line.TrimEnd(',');

}
person Christopher Smit    schedule 19.06.2019

На днях я просматривал это:

Согласно краткому руководству вы можете написать такой код:

[DelimitedRecord(",")]
public class Customer
{
  public int CustId;    
  public string Name;
  public decimal Balance;
}
FileHelperEngine engine = new FileHelperEngine(typeof(Customer));
Customer[] res = engine.ReadFile("FileIn.txt") as Customer[];
engine.WriteFile("FileOut.txt", res);
person Aaron Anodide    schedule 08.03.2012