[写入流时(也许也有其他目的地),如果我的DataTable包含少于12行,则CsvHelper不会返回任何内容。我测试了逐行添加行,直到在字符串myCsvAsString变量中得到结果。
有人遇到这个问题吗?这是我用来复制它的代码:
var stream = new MemoryStream();
using (var writer = new StreamWriter(stream))
using (var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
if (includeHeaders)
{
foreach (DataColumn column in dataTable.Columns)
{
csvWriter.WriteField(column.ColumnName);
}
csvWriter.NextRecord();
}
foreach (DataRow row in dataTable.Rows)
{
for (var i = 0; i < dataTable.Columns.Count; i++)
{
csvWriter.WriteField(row[i]);
}
csvWriter.NextRecord();
}
csvWriter.Flush();
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
string myCsvAsString = reader.ReadToEnd();
}
好吧,我发现了问题,我在刷新csvWriter,但没有刷新StreamWriter。
我在csvWriter.Flush()之后添加了writer.Flush(),并且流完成了。