21

Visual Studio 2012でコーディングし、エンティティ モデルをデータ レイヤーとして使用しています。ただし、Linq ステートメントを使用したドロップダウン コントロールは、ページを読み込もうとすると未処理の例外をスローする傾向があります (上記のタイトル)。以下は私のコードです。

using (AdventureWorksEntities dw = new AdventureWorksEntities())
        {
            ddlCon.DataSource = (from em in dw.Employees
                                 select new { em.Title, em.EmployeeID });

            ddlCon.DataTextField = "Title";
            ddlCon.DataValueField = "EmployeeID";
            ddlCon.DataBind();
            ddlCon.Items.Insert(0, new ListItem("--Select--", "--Select--"));
        }
  1. エラーが発生した理由を知りたい
  2. LINQ を使用するときにコントロールにバインドする適切な方法は何ですか?
4

3 に答える 3

51

エラーはかなり明確です。クエリ結果に直接バインドすることはできませんが、代わりにローカル コレクションを設定する必要があります。

これを行う最も簡単な方法はList<T>、 経由で に変換することToList()です。

 ddlCon.DataSource = (from em in dw.Employees
                             select new { em.Title, em.EmployeeID }).ToList();
于 2012-10-17T16:02:37.530 に答える
0

この質問は既に回答されていますが、メッセージ ボックスから直接回答を得ることもできることを示したいと思います (同じエラーが発生しました) エラーダイアログ ボックスの画像

using (var retrive=new Models.Academy_MSDBEntities())
        {
            var query = retrive.Students.Where(s => s.Year == year).ToList();
            return query;
        }
于 2019-04-05T20:34:25.523 に答える