2009-08-10 4 views

Antwort

9

Ein Beispiel. Sie sollten die Idee bekommen.

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

Sie brauchen ein. ToArray() drin. –

+1

warum? Ich habe das von einem meiner Projekte kopiert. –

1

Ihre Linq-Abfrage wird eine Art Objektgraph zurückgeben; Sobald Sie die Ergebnisse haben, können Sie jede Methode verwenden, um es in XML zu übersetzen, die Sie mit Standardobjekten könnten. Linq to XML enthält neue XML-Klassen, die eine Möglichkeit zum Erstellen von XML bieten (siehe die Antwort von rAyt). Sie können aber auch einen XmlSerializer verwenden und Attribute in Ihre Klasse/Eigenschaften setzen, um die exakte XML-Ausgabe zu steuern.

1

Der folgende Code funktioniert für "linq to entities". Die Daten müssen mit .ToArray() im Speicher gespeichert werden, um sie zu bearbeiten.

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() sollte ausreichen, um zu verhindern, dass falsche Methoden in den IQueryable-Ausdrucksgenerator eskalieren. – springy76

+0

@ springy76 Ja, du hast absolut recht. .AsEnumerable() sollte genauso gut funktionieren, wenn nicht besser! – txavier

Verwandte Themen