我在 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--"));
}
答案 0 :(得分:43)
错误相当明确 - 您不能直接绑定到查询结果,而是需要填充一些本地集合。
最简单的方法是通过List<T>
将其转换为ToList()
:
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID }).ToList();
答案 1 :(得分:6)
或者如果你想避免编写LINQ表达式,你可以这样做:
var dbContext = new EF.CustomerEntities();
gvCustomers.DataSource = dbContext.CustomersTable.ToList();
答案 2 :(得分:0)
尽管这个问题已经回答了,但我还是想表明您甚至可以直接从消息框中获得答案(我也遇到了同样的错误) ERROR DIALOGUE BOX IMAGE
using (var retrive=new Models.Academy_MSDBEntities())
{
var query = retrive.Students.Where(s => s.Year == year).ToList();
return query;
}