2012-03-08 2 views
4

Есть ли какая-либо форма инструкции, которая преобразует datarow в CSV-строку, чтобы она могла быть записана в CSV-файл? (С или без шагов между ними)Datarow to CSV line C#

+1

Вы смотрели этот вопрос [Написание CSV-файла в .net] (http://stackoverflow.com/questions/1684667/writing-a-csv-file-in-net) (в частности [этот ответ] (http://stackoverflow.com/a/2315185/164966)), между этим и [эти примеры] (http://msdn.microsoft.com/en-us/library/bb386916.aspx) Linq to DataSets, вы, вероятно, могли бы записать экспорт в 10 строк кода. – R0MANARMY

ответ

1

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

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

+0

Чтение, кажется довольно многообещающим – Dashzapp

+0

Ссылка не действительна. –

3

Попробуйте с помощью следующего кода:

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()); 
+0

Тестирование этого – Dashzapp

+0

Хороший файл кода! – Dashzapp

+0

Но не работает полностью ... – Dashzapp

0

Я смотрел на this другой день:

Согласно QuickStart вы можете написать код, как так:

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