2011-08-10 5 views
1

どうして次のようになります: "パラメータなしのコンストラクタとイニシャライザのみがLinq To Entitiesで許可されています"という行に誤りがあります。私はAJAXを使用してHTMLテーブルを更新するためにエンティティからHTMLを生成しようとしています。linq-to-entitiesを使用してxmlを生成する際のエラー

public class Foo 
{ 
    public int Bar1 { get; set; } 
    public string Bar2 { get; set; } 
    public DateTime Bar3 { get; set; } 
} 

XElement[] elements = (
      from x in FooEntities.Foos 
      select new XElement("tr", 
       new XElement("td", HttpUtility.HtmlEncode(x.Bar1)), 
       new XElement("td", HttpUtility.HtmlEncode(x.Bar2)), 
       new XElement("td", HttpUtility.HtmlEncode(x.Bar3))) 
      ) 
      .ToArray<XElement>(); // Error 

XElement html = new XElement("table", headerXElement, elements); 
+1

補足として、 'ToArray'呼び出しでtype引数を指定する必要はありません。これはコンパイラによって推論されるためです。 –

答えて

1

まあ、エラーメッセージは、それ自体について語ります。

Linq To Entitiesでは、パラメータのないコンストラクタと初期化子しか使用できません。

LINQ to Entitiesは気にすることはできませんが、どう思いますか?あなただけのオブジェクトにLINQを扱っているので、あなたはエンティティを取得した直後
コールToArray

var foos = (from x in FooEntities.Foos 
      select x).ToArray(); 

XElement[] elements = (
      from x in foos 
      select new XElement("tr", 
       new XElement("td", HttpUtility.HtmlEncode(x.Bar1)), 
       new XElement("td", HttpUtility.HtmlEncode(x.Bar2)), 
       new XElement("td", HttpUtility.HtmlEncode(x.Bar3))) 
      ) 
     .ToArray(); 

XElement html = new XElement("table", headerXElement, elements); 

これは、データベース・コール(最初のクエリ)とビジネス・オブジェクト/ XML生成(分離することも良い方法です2番目のクエリ)。はデータベースに対して何が実行され、何がメモリに格納されますかです。

+0

私は同意する、笑。あなたがこれを投稿したときに私はそれを理解しました。私はforeach(var xはfoos)html.Add(new XElement ... –

関連する問題