无法将LINQ结果绑定到下拉列表

时间:2012-11-28 04:17:36

标签: c# linq entity-framework-5 asp.net-4.5

我是新手链接并且正在跟随How to bind LINQ data to dropdownlist尝试使用LINQ将我的数据绑定到下拉列表但是我收到错误“数据绑定直接存储查询(DbSet,DbQuery,DbSqlQuery)不支持。而是使用数据填充DbSet,例如通过调用DbSet上的Load,然后绑定到本地数据。对于WPF绑定到DbSet.Local。对于WinForms绑定到DbSet.Local.ToBindingList()。“我按照代码示例,所以我不知道我做错了什么或如何解决它。任何人都可以请求,因为这是使用LINQ的第二天。

            using (var db = new FullContext())
            {
                ddlItemType.DataSource = from t in db.ItemTypes
                                         select new { t.ID, t.Name };
                ddlItemType.DataTextField = "Name";
                ddlItemType.DataValueField = "ID";
                ddlItemType.DataBind();
            }

3 个答案:

答案 0 :(得分:1)

你是binding dropdown with query instead of data object。您已返回查询但不是实际数据的语句。您需要将其与数据对象绑定到实例列表。

更改查询

ddlItemType.DataSource = from t in db.ItemTypes
     select new { t.ID, t.Name };

到数据源

ddlItemType.DataSource =  (from t in db.ItemTypes
     select new { t.ID, t.Name }).ToList();

答案 1 :(得分:0)

你可以尝试:

ddlItemType.DataSource = (from t in db.ItemTypes
                          select new { t.ID, t.Name }).ToList()

答案 2 :(得分:0)

public static void ListItem(DropDownList container) {
        DbDataContext db = new DbDataContext();
        var rs = from t in db.ItemTypes
                         select new { t.ID, t.Name };

        foreach (var r in rs)
            container.Items.Add(new ListItem(t.ID + " - " + t.Name, t.ID));
}

致电:

  

列表项(YourDropdownListID);