如何将Linq查询结果转换为XML?

7

我是Linq to XML领域的新手...

我有一个包含结果的Linq查询,我想将这些结果转换为XML。我猜一定有相对简单的方法来做到这一点,但我找不到它...

谢谢!

3个回答

9
一个例子。你应该明白这个概念。
XElement xml = new XElement("companies",
            from company in db.CustomerCompanies
            orderby company.CompanyName
            select new XElement("company",
                new XAttribute("CompanyId", company.CompanyId),
                new XElement("CompanyName", company.CompanyName),
                new XElement("SapNumber", company.SapNumber),
                new XElement("RootCompanyId", company.RootCompanyId),
                new XElement("ParentCompanyId", company.ParentCompanyId)
                )
            );

你需要在那里加上一个 .ToArray()。 - Ben Lesh
1
为什么?我把这个从我的项目中复制出来。 - Henrik P. Hessel

1
以下代码适用于“linq to entities”。数据必须在内存中,使用.ToArray()完成,才能进行处理,这是一种说法。
XElement xml = new XElement("companies",
        from company in db.CustomerCompanies.AsEnumerable()
        orderby company.CompanyName
        select new XElement("company",
            new XAttribute("CompanyId", company.CompanyId),
            new XElement("CompanyName", company.CompanyName),
            new XElement("SapNumber", company.SapNumber),
            new XElement("RootCompanyId", company.RootCompanyId),
            new XElement("ParentCompanyId", company.ParentCompanyId)
            )
        );

.AsEnumerable() 应该足以防止错误的方法升级为 IQueryable 表达式生成器。 - springy76
@springy76,没错,你说得对。如果不是更好的话,AsEnumerable()应该也能很好地工作! - txavier

1

你的Linq查询将返回某种对象图; 一旦你有了结果,你可以使用任何方法将它转换为XML,就像标准对象一样。 Linq to XML包括新的XML类,提供了一种创建XML的方式(请参见rAyt的答案),但你也可以使用XmlSerializer并在你的类/属性上放置属性来控制精确的XML输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接