C# 将数据表保存到文本文件的最短方法

C# 将数据表保存到文本文件的最短方法,c#,datatable,streamwriter,C#,Datatable,Streamwriter,我刚刚找到了一些答案,但发现它们都非常长,需要大量迭代,因此我提出了自己的解决方案: 将表格转换为字符串: string myTableAsString = String.Join(Environment.NewLine, myDataTable.Rows.Cast<DataRow>(). Select(r => r.ItemArray).ToArray(). Select(x => String.Join("\t", x

我刚刚找到了一些答案,但发现它们都非常长,需要大量迭代,因此我提出了自己的解决方案:

  • 将表格转换为字符串:

    string myTableAsString = 
        String.Join(Environment.NewLine, myDataTable.Rows.Cast<DataRow>().
            Select(r => r.ItemArray).ToArray().
                Select(x => String.Join("\t", x.Cast<string>())));
    

  • 有没有更短/更好的方法

    @Leonardo抱歉,我无法发表评论,所以我发布了

    有时,您可以询问数据集,然后使用它。像这样:

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

    这是另一种方式,但我不知道哪一个会给你一个更好的度量。

    如果你认为XML是文本,你可以这样做:<代码> MyDataTab.WriteXml(“MyData.xml”)和<代码> MyDataTab.ReadXml(“MyData.xml”)

    < p>你的<代码> DataTabor <代码>被命名为MyDataTable,你可以将它添加到<代码> DataSet < /Case>为:

    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");
    
    此处有关于使用架构保存/加载的更多信息:

    要短多少?一行保存到文件。还有一种预定义的DataTable方法,用于将数据表的内容保存到文件中。如果您有工作代码,则该代码不属于此网站。此站点用于修复损坏的代码。如果您可以使用xml,那么您可能有兴趣将
    DataTable
    添加到
    DataSet
    并在其上调用
    WriteXml
    。我只是想知道我是否不仅仅是在重新发明轮子。如果有一个非常简单和简短的方法,我只是找不到那里,如果有人能让我知道,我将不胜感激。重要的部分是将表转换为字符串,但是感谢您提供的在一行中写入文件的提示,我不知道。是的,这看起来也简单多了。为什么需要创建数据集?你不能按照别人的建议执行myDataTable.WriteXml(“filename.xml”)吗?出于某种原因,我考虑了多个表。如果只需要编写一个表,那么当然可以使用
    DataTable.WriteXml
    。仅供参考:在.NET Framework 4.6.2中,
    System.Data.DataSet
    上没有名为
    AddTable
    的方法,我在
    DataSet.Tables
    上使用了
    Add
    方法。看到和
    myDataTable.WriteXml("myXmlPath.xml", XmlWriteMode.WriteSchema);
    myDatatable.ReadXml("myXmlPath.xml");