1

我的应用程序在下面显示此错误:

不支持将数据直接绑定到存储查询(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();
        }

注意:请在您的回答中详细解释为什么会出现此错误及其解决方案。

4

2 回答 2

3

就像在您的其他问题中一样,您需要使用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();
于 2012-10-17T16:48:27.447 回答
1

您需要执行查询并将结果从数据库带到内存。只有内存中的对象可以用作数据源。这可以通过应用于ToList您的查询来实现:

ddlCon.DataSource = (from em in dw.Employees
                     select new { em.Title, em.EmployeeID })
                    .Distinct()
                    .OrderBy(x => x.Title)
                    .ToList();
于 2012-10-17T16:47:30.710 回答