我只是找到了这几个答案,却发现他们都可怕长,有很多重复的,所以我想出了自己的解决方案:
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();
是否有一个较短/更好的办法?
你有你的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");
@Leonardo抱歉,但我可以“T评论,所以我发帖。
有时候,你可以要求数据集,然后使用它。像这样:
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")
除非你的模式保存你得到一个错误:
myDataTable.WriteXml("myXmlPath.xml", XmlWriteMode.WriteSchema);
myDatatable.ReadXml("myXmlPath.xml");
有与架构这里保存/载入更多的信息:DataTable does not support schema inference from Xml.?