【问题标题】:Datarow to CSV line C#数据行到 CSV 行 C#
【发布时间】:2025-12-11 22:40:01
【问题描述】:

是否有任何形式的语句可以将数据行转换为 CSV 行,以便将其写入 .csv 文件? (中间有或没有步骤)

【问题讨论】:

标签: c# csv datarow


【解决方案1】:

试试下面的代码:

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

【讨论】:

  • 你哪里有问题????你能详细说明一下你哪里有问题吗???
  • 我还在测试,不需要他们无限的问号!我在 var columnnames = dt.columns 处收到错误
  • 您是否从 System 类中导入了某些内容?
  • 你在谈论命名空间吗?
  • 是的,让我发布错误:错误 2 'System.Data.DataSet' 不包含 'Rows' 的定义,并且没有扩展方法 'Rows' 接受类型为 'System 的第一个参数.Data.DataSet' 可以找到(您是否缺少 using 指令或程序集引用?)另一个完全相同,只是使用列而不是行
【解决方案2】:

以下内容对我有用。

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

}

【讨论】:

    【解决方案3】:

    快速的 Google 搜索发现了这一点: http://www.rcs-solutions.com/blog/2009/01/15/ConvertDataTableToCSVViaExtensionMethod.aspx

    有点过时了。没有本地方法可以做到这一点,因此您需要使用循环结构迭代数据表,但我建议使用 LINQ 方法,因为它会更干净。

    【讨论】:

    • 读了,看起来很有希望
    • 链接已损坏。
    【解决方案4】:

    前几天我在看this

    根据快速入门,您可以编写如下代码:

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

    【讨论】: