Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Linq查询结果转换为XML?_C#_Linq_Linq To Xml - Fatal编程技术网

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

C# 如何将Linq查询结果转换为XML?,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,Linq到XML领域的新手 我有一个带有结果的Linq查询,我想将这些结果转换成XML。我猜一定有相对简单的方法,但我找不到 谢谢 一个例子。你应该明白这一点 XElement xml = new XElement("companies", from company in db.CustomerCompanies orderby company.CompanyName select new XElement("company

Linq到XML领域的新手

我有一个带有结果的Linq查询,我想将这些结果转换成XML。我猜一定有相对简单的方法,但我找不到


谢谢

一个例子。你应该明白这一点

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)
                )
            );

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

以下代码适用于“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)
            )
        );

你需要一个.ToArray()在那里。为什么?我从我的一个项目中复制了这个。AsEnumerable()应该足以防止错误的方法升级到IQueryable表达式生成器中。@springy76是的,您完全正确。AsEnumerable()即使不是更好,也应该同样有效!