我的应用程序在下面显示此错误:
不支持直接与商店查询(DbSet,DbQuery,DbSqlQuery)绑定数据
由于我正在尝试将我的下拉控件绑定到此LINQ语句。 检查下面的代码;
using (AdventureWorksEntities dw = new AdventureWorksEntities())
{
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID }).Distinct().OrderBy(name => name);
;
ddlCon.DataTextField = "Title";
ddlCon.DataValueField = "EmployeeID";
ddlCon.DataBind();
}
注意:请在您的答案中解释为什么会出现此错误及其解决方案。
答案 0 :(得分:3)
就像在your other question中一样,您需要使用ToList()
,因为您无法直接绑定到查询结果。
话虽如此,我也怀疑你的OrderBy
是不正确的。这应该是:
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID })
.Distinct()
.OrderBy(emp => emp.Title) // Pick Title or EmployeeID here
.ToList();
答案 1 :(得分:1)
您需要执行查询并将数据库中的结果带到内存中。只有内存中的对象可以用作数据源。这可以通过将ToList
应用于您的查询来实现:
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID })
.Distinct()
.OrderBy(x => x.Title)
.ToList();