【问题标题】:Can not bind distinct to drop down control无法将不同绑定到下拉控件
【发布时间】:2012-10-17 16:45:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# linq visual-studio data-binding entity


    【解决方案1】:

    就像在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();
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 2013-04-12
        • 1970-01-01
        相关资源
        最近更新 更多