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

Olu*_*emi 18 c# linq data-binding entity visual-studio

我在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--"));
        }
Run Code Online (Sandbox Code Playgroud)
  1. 我想知道为什么会发生错误
  2. 使用LINQ时绑定到控件的正确方法是什么?

Ree*_*sey 45

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

要做到这一点最简单的方法是将其转换为一个List<T>,通过ToList():

 ddlCon.DataSource = (from em in dw.Employees
                             select new { em.Title, em.EmployeeID }).ToList();
Run Code Online (Sandbox Code Playgroud)


Den*_*els 6

或者如果你想避免编写LINQ表达式,你可以这样做:

var dbContext = new EF.CustomerEntities();
gvCustomers.DataSource = dbContext.CustomersTable.ToList();
Run Code Online (Sandbox Code Playgroud)