2009-08-10 7 views

Répondre

9

Un exemple. Vous devriez avoir l'idée.

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

Vous avez besoin d'un .ToArray() dedans. –

+1

pourquoi? J'ai copié cela à partir d'un de mes projets. –

1

Votre requête Linq va retourner une sorte de graphe d'objet; Une fois que vous avez les résultats, vous pouvez utiliser n'importe quelle méthode pour le traduire en XML que vous pourriez avec des objets standards. Linq to XML inclut de nouvelles classes XML qui présentent une façon de créer du XML (voir la réponse de rAyt), mais vous pouvez aussi utiliser un XmlSerializer et mettre des attributs sur votre classe/propriétés pour contrôler la sortie XML exacte.

1

Le code ci-dessous fonctionnera pour "linq to entities". Les données doivent être dans la mémoire, faites avec .ToArray(), pour qu'il soit travaillé, dans une question de parler.

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() devrait être suffisant pour empêcher l'escalade des mauvaises méthodes dans le générateur d'expressions IQueryable. – springy76

+0

@ springy76 Yep absolument votre droite. . AsEnumerable() devrait fonctionner aussi bien, sinon mieux! – txavier

Questions connexes