保存数据表到文本文件最短的路

问题描述 投票:5回答:4

我只是找到了这几个答案,却发现他们都可怕长,有很多重复的,所以我想出了自己的解决方案:

  1. 表格转换成字符串: string myTableAsString = String.Join(Environment.NewLine, myDataTable.Rows.Cast<DataRow>(). Select(r => r.ItemArray).ToArray(). Select(x => String.Join("\t", x.Cast<string>())));
  2. 然后只需保存字符串文本文件,例如: StreamWriter myFile = new StreamWriter("fileName.txt"); myFile.WriteLine(myFile); myFile.Close();

是否有一个较短/更好的办法?

c# datatable streamwriter
4个回答
8
投票

你有你的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");

2
投票

@Leonardo抱歉,但我可以“T评论,所以我发帖。

有时候,你可以要求数据集,然后使用它。像这样:

foreach (DataRow row in ds.Tables[0].Rows)
{
    foreach (object item in row.ItemArray)
    {
        myStreamWriter.Write((string)item + "\t");
    }
    myStreamWriter.WriteLine();
}

那是另一种方式,但我不知道这“会给你一个更好的指标。


1
投票

如果您认为XML文本,你可以这样做:myDatatable.WriteXml("mydata.xml")myDatatable.ReadXml("mydata.xml")


1
投票

除非你的模式保存你得到一个错误:

myDataTable.WriteXml("myXmlPath.xml", XmlWriteMode.WriteSchema);
myDatatable.ReadXml("myXmlPath.xml");

有与架构这里保存/载入更多的信息:DataTable does not support schema inference from Xml.?

© www.soinside.com 2019 - 2024. All rights reserved.