C# 无法将distinct绑定到下拉控件

C# 无法将distinct绑定到下拉控件,c#,linq,visual-studio,data-binding,entity,C#,Linq,Visual Studio,Data Binding,Entity,我的应用程序在下面显示此错误: 不支持直接将数据绑定到存储查询(DbSet、DbQuery、DbSqlQuery) 由于我正在尝试将下拉控件绑定到此LINQ语句。 请在下面查看我的代码 using (AdventureWorksEntities dw = new AdventureWorksEntities()) { ddlCon.DataSource = (from em in dw.Employees s

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

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

注意:请在您的答案中详细解释为什么会出现这种错误以及解决方法

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

ddlCon.DataSource = (from em in dw.Employees
                     select new { em.Title, em.EmployeeID })
                    .Distinct()
                    .OrderBy(x => x.Title)
                    .ToList();

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

ddlCon.DataSource = (from em in dw.Employees
                     select new { em.Title, em.EmployeeID })
                    .Distinct()
                    .OrderBy(x => x.Title)
                    .ToList();
与中一样,您需要使用
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();
与中一样,您需要使用
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();