如何使用linq/实体框架绑定gridview

本文关键字:框架 绑定 gridview 实体 何使用 linq | 更新日期: 2023-09-27 17:54:17

我需要绑定GridView,我使用这个代码:

  ProductDBEntities db = new ProductPDBEntities();
    var pro = from u in db.Products where u.PID == 1 select u;
    if (pro != null)
    {
        GridView1.DataSource = pro;
        GridView1.DataBind();
    }

并得到这个错误。

系统。InvalidOperationException:序列包含不止一个元素

谁能告诉我我做错了什么?

如何使用linq/实体框架绑定gridview

检查Duplication,然后尝试绑定。

我已经编辑了我的最后一个答案,以便显示完整的代码:

ProductDBEntities db = new ProductPDBEntities();
GridView1.DataSource = (from u in db.Products where u.PID == 1 select u).First();
GridView1.DataBind();

下面的代码可能会有帮助:

    gv.DataSource = (from u in db.Products .First(u=> u.PID==1)).ToList();

如果你有一个表和表的细节可以使用这个:

    gv.DataSource = (from a in context.tblorder.First(p => p.id == 19).tblorderdetail where a.ID == 19 select a).ToList();

首先,您可以检查您的数据,看看是否有多个产品的PID = 1。

其次,您可以使用.First()方法来确保只得到一个绑定结果:
var pro = (from u in db.Products where u.PID == 1 select u).First();

将变量存储为对象类型,并将对象类型指定为网格的数据源

我认为你必须做ToList()时,添加到DataSource:

ProductDBEntities db = new ProductPDBEntities();
var pro = from u in db.Products where u.PID == 1 select u;
if (pro != null)
{
    GridView1.DataSource = pro.ToList();
    GridView1.DataBind();
}

注意:因为它是一个GridView,必须采取n行数。No row limit .

我这样解决:

ProductDBEntities ctx = new ProductDBEntities ();
var q1 = ctx.Products.Where(x => x.PID == 1).ToList();
GridView1.DataSource = q1;
GridView1.DataBind();

我试过了。它的工作。