2009-08-10 12 views

Respuesta

9

Un ejemplo. Deberías tener la idea.

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

Necesita un .ToArray() allí. –

+1

¿por qué? Copié esto de un proyecto mío. –

1

Su consulta Linq va a devolver algún tipo de gráfico de objetos; Una vez que tenga los resultados, puede usar cualquier método para traducirlo a XML que pueda con objetos estándar. Linq to XML incluye nuevas clases XML que presentan una forma de crear XML (vea la respuesta de rAyt para esto), pero también puede usar un XmlSerializer y poner atributos en su clase/propiedades para controlar el resultado XML exacto.

1

El siguiente código funcionará para "linq to entities". Los datos tienen que estar en la memoria, hechos con .ToArray(), para poder trabajarlos, en cuestión de palabras.

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

. AsEnumerable() debería ser suficiente para evitar que los métodos erróneos se intensifiquen en el generador de expresiones IQueryable. – springy76

+0

@ springy76 Sí, tienes toda la razón. .AsEnumerable() debería funcionar igual de bien, ¡si no mejor! – txavier

Cuestiones relacionadas