visual studio 2012をコーディングし、Entity Modelをデータレイヤーとして使用しています。ただし、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--"));
}
エラーはかなり明確です。クエリ結果に直接バインドすることはできませんが、代わりにローカルコレクションを設定する必要があります。
これを行う最も簡単な方法は、ToList()
を介してList<T>
に変換することです。
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID }).ToList();
または、LINQ式の記述を避けたい場合は、次のようにします。
var dbContext = new EF.CustomerEntities();
gvCustomers.DataSource = dbContext.CustomersTable.ToList();
この質問はすでに回答されていますが、メッセージボックスから直接回答を取得することもできることを示したいと思います(同じエラーが発生しました) エラーダイアログボックスの画像
using (var retrive=new Models.Academy_MSDBEntities())
{
var query = retrive.Students.Where(s => s.Year == year).ToList();
return query;
}