不支持直接绑定到商店查询(DbSet,DbQuery,DbSqlQuery)的数据

我在visual studio 2012上编码并使用实体模型作为我的数据层。 但是,使用Linq语句的下拉控件往往会在页面尝试加载时抛出未处理的exception(上面标题)。 这是我的代码如下;

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时绑定到控件的正确方法是什么?

错误相当明确 – 您无法直接绑定到查询结果,但需要填充一些本地集合。

最简单的方法是通过ToList()将其转换为List

  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();