2009-08-10 10 views

答えて

9

例。あなたはその考えを得るべきです。

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

そこには.ToArray()が必要です。 –

+1

なぜですか?私はこれを私のプロジェクトからコピーしました。 –

1

あなたのLinqクエリは、何らかのオブジェクトグラフを返すでしょう。結果が得られれば、任意のメソッドを使用して標準オブジェクトで可能なXMLに変換できます。 Linq to XMLには新しいXMLクラスが含まれています(これについてはrAytの回答を参照してください).XmlSerializerを使用して、クラス/プロパティに属性を入れて正確なXML出力を制御することもできます。

1

以下のコードは、 "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) 
      ) 
     ); 
+0

.AsEnumerable()は、間違ったメソッドがIQueryable式ジェネレータにエスカレートするのを防ぐのに十分でなければなりません。 – springy76

+0

@ springy76あなたの絶対に正しい。 .AsEnumerable()もうまくいけばうまくいくはずです! – txavier

関連する問題