【问题标题】:How do you transform a Linq query result to XML?如何将 Linq 查询结果转换为 XML?
【发布时间】:2009-08-10 16:12:03
【问题描述】:

Linq to XML 领域的新手...

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

谢谢!

【问题讨论】:

    标签: c# linq linq-to-xml


    【解决方案1】:

    一个例子。你应该明白了。

    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() 。
    • 为什么?我从我的一个项目中复制了这个。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      以下代码适用于“linq to entity”。数据必须在内存中,使用 .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 是的,你完全正确。 .AsEnumerable() 应该也能正常工作,如果不是更好的话!
      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 2012-07-05
      • 2012-12-18
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      相关资源
      最近更新 更多