c# - 使用 Linq-to-XML 和 Linq-to-SQL 生成非常大的 XML 文件

标签 c# .net linq linq-to-sql linq-to-xml

我正在尝试将一个非常大的数据库(数 GB)转储到 XML。我正在使用 Linq-to-SQL 从数据库中获取数据,并使用 Linq-to-XML 生成 XML。我正在使用 XStreamingElement 来保持低内存使用率。然而,在没有编写任何 XML 的情况下,该作业仍会分配所有可用内存。结构如下所示:

var foo =
    new XStreamingElement("contracts",
       <LinqtoSQL which fetches data>.Select(d =>
    new XElement("contract",
        ... generate attributes etc...
using (StreamWriter sw = new StreamWriter("contracts.xml"))
{
    using (XmlWriter xw = XmlWriter.Create(sw))
    {
        foo.WriteTo(xw);
    }
}

我也试过用以下方式保存:

foo.Save("contracts.xml", SaveOptions.DisableFormatting);

...无济于事。

有什么线索吗?

最佳答案

数据有多复杂?我对 XStreamingElement 不是很熟悉,但我想知道您是否会更喜欢直接使用 XmlWriter?特别是对于循环中的like数据,使用起来非常方便。

但是,我担心将 xml 作为此数据的选择。这是要求吗?或者只是一种方便的可用格式?特别是,可能很难方便地解析那么大的 xml,因为您必须使用 XmlReader(这比 XmlWriter)。

如果您可以使用其他格式,我会建议您...有一些想法,但除非您提到您有兴趣,否则我不会喋喋不休。

关于c# - 使用 Linq-to-XML 和 Linq-to-SQL 生成非常大的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697261/

相关文章:

c# - 按顺序运行任务 : how to deal with exceptions?

c# - Azure 包包含不正确的 DLL

c# - 是否可以有一个 out ParameterExpression?

c# - 在 Linq 中比较和分配元素

c# - 从 JOIN 中选择 IEnumerable 会导致复杂的 Linq-to-SQL 查询

c# - 检查字符串的格式

c# - 如何异步使用 UserError 处理程序

c# - 具有嵌套组的动态 linq 查询

c# - 是否可以使用来自托管代码的 C# 反射来调用非托管代码?

C# .net 3.5+ Dictionary<string, string> 键/值对显示值作为默认选择 – MVC 选择列表