gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:59:54 24 4
gpt4 key购买 nike

给定这段代码:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com