将 DataTable 保存到文本文件的最短方法
Shortest way to save DataTable to Textfile
我刚刚找到了几个答案,但发现它们都长得可怕,而且有很多迭代,所以我想出了自己的解决方案:
将table转换为字符串:
string myTableAsString =
String.Join(Environment.NewLine, myDataTable.Rows.Cast<DataRow>().
Select(r => r.ItemArray).ToArray().
Select(x => String.Join("\t", x.Cast<string>())));
然后简单的将字符串保存到文本文件中,例如:
StreamWriter myFile = new StreamWriter("fileName.txt");
myFile.WriteLine(myFile);
myFile.Close();
有没有更短/更好的方法?
@Leonardo 抱歉,我无法发表评论,所以我 post。
有时您可以询问数据集,然后使用它。像这样:
foreach (DataRow row in ds.Tables[0].Rows)
{
foreach (object item in row.ItemArray)
{
myStreamWriter.Write((string)item + "\t");
}
myStreamWriter.WriteLine();
}
这是另一种方式,但我不知道哪种方式会给您更好的指标。
如果您将 XML 视为文本,您可以:myDatatable.WriteXml("mydata.xml")
和 myDatatable.ReadXml("mydata.xml")
您将 DataTable
命名为 myDataTable,您可以将其添加到 DataSet
中:
var dataSet = new DataSet();
dataSet.AddTable(myDataTable);
// Write dataset to xml file or stream
dataSet.WriteXml("filename.xml");
您还可以从 xml 文件或流中读取:
dataSet.ReadXml("filename.xml");
除非您使用架构保存它,否则您会收到错误消息:
myDataTable.WriteXml("myXmlPath.xml", XmlWriteMode.WriteSchema);
myDatatable.ReadXml("myXmlPath.xml");
这里有关于 saving/loading 架构的更多信息:
DataTable does not support schema inference from Xml.?
我刚刚找到了几个答案,但发现它们都长得可怕,而且有很多迭代,所以我想出了自己的解决方案:
将table转换为字符串:
string myTableAsString = String.Join(Environment.NewLine, myDataTable.Rows.Cast<DataRow>(). Select(r => r.ItemArray).ToArray(). Select(x => String.Join("\t", x.Cast<string>())));
然后简单的将字符串保存到文本文件中,例如:
StreamWriter myFile = new StreamWriter("fileName.txt"); myFile.WriteLine(myFile); myFile.Close();
有没有更短/更好的方法?
@Leonardo 抱歉,我无法发表评论,所以我 post。
有时您可以询问数据集,然后使用它。像这样:
foreach (DataRow row in ds.Tables[0].Rows)
{
foreach (object item in row.ItemArray)
{
myStreamWriter.Write((string)item + "\t");
}
myStreamWriter.WriteLine();
}
这是另一种方式,但我不知道哪种方式会给您更好的指标。
如果您将 XML 视为文本,您可以:myDatatable.WriteXml("mydata.xml")
和 myDatatable.ReadXml("mydata.xml")
您将 DataTable
命名为 myDataTable,您可以将其添加到 DataSet
中:
var dataSet = new DataSet();
dataSet.AddTable(myDataTable);
// Write dataset to xml file or stream
dataSet.WriteXml("filename.xml");
您还可以从 xml 文件或流中读取:
dataSet.ReadXml("filename.xml");
除非您使用架构保存它,否则您会收到错误消息:
myDataTable.WriteXml("myXmlPath.xml", XmlWriteMode.WriteSchema);
myDatatable.ReadXml("myXmlPath.xml");
这里有关于 saving/loading 架构的更多信息: DataTable does not support schema inference from Xml.?