c# - 从 DataTable 写入行正在创建连续写入 : how do I preserve each line as it is written?

标签 c#

给定这段代码:

using (StreamWriter sw = File.CreateText(file))
{
    for (int r = 0; r < originalDataTable.Rows.Count; r++)
    {
        for (int c = 0; c < originalDataTable.Columns.Count; c++)
        {
            var rowValueAtColumn = originalDataTable.Rows[r][c].ToString();

            var valueToWrite = string.Format(@"{0}{1}", rowValueAtColumn, "\t");

            if (c != originalDataTable.Columns.Count)
                sw.Write(valueToWrite);
            else 
                sw.Write(valueToWrite + @"\n");
        }
    }
}

我正在尝试一次一行地将 DataRow 写回文件;但是,它正在创建的文件正在创建一个连续语句,其中写入文件的所有数据都在一行中。应该有 590 条单独的线,而不仅仅是一条。

我需要在上面的代码中添加什么,才能像数据表中那样断开我的行?我的代码似乎无法正常工作。

最佳答案

sw.Write(valueToWrite + @"\n"); 是错误的。因为 @ 它没有输入换行符,所以您正在编写字符 \ 然后是字符 n

您想执行 sw.Write(valueToWrite + "\n"); 或让程序通过执行 sw.WriteLine(valueToWrite),但是这将输入 Environment.NewLine在 Windows 上是 \r\n


但是,您可以通过在循环列的外部插入行分隔符来使您的代码更加简单。我还在循环顶部定义了两个分隔符,以防您想要更改它们(当您点击一些具有 \t\n 在文本本身?),以及其他一些小调整以使代码更易于阅读。

string colSeperator = "\t";
string rowSeperator = "\n";

using (StreamWriter sw = File.CreateText(file))
{
    for (int r = 0; r < originalDataTable.Rows.Count; r++)
    {
        for (int c = 0; c < originalDataTable.Columns.Count; c++)
        {
            sw.Write(originalDataTable.Rows[r][c])

            sw.Write(colSeperator);
        }
        sw.Write(rowSeperator);
    }
}

这是另一个简化,只是为了展示其他方法(现在您不需要检查 originalDataTable.Columns.Count)

string colSeperator = "\t";
string rowSeperator = "\n";

using (StreamWriter sw = File.CreateText(file))
{
    foreach (DataRow row in originalDataTable.Rows)
    {
        foreach (object value in row.ItemArray))
        {
            sw.Write(value)
            sw.Write(colSeperator);
        }
        sw.Write(rowSeperator);
    }
}

关于c# - 从 DataTable 写入行正在创建连续写入 : how do I preserve each line as it is written?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068233/

相关文章:

c# - Solr.Net 查询 : ArgumentException in Windows Forms

c# - Monodroid 环境变量

c# - 您如何使用 C# WinForms 在 MVP 中的 View 之间导航?

c# - 为什么 .NET 异常不适用于接口(interface)而不是基类?

javascript - 如何从模态框更新父表单

c# - MS graph API Oauth2PermissionGrants 无法授予角色

c# - 如何从长值转换为 KB 字符串格式

如果第二次启动,C# 程序只能运行一次 + BringToFront

c# - 通过 C#、Python 和 T-SQL 的字节数组

javascript - 刷新mvc中的 View