使用Entity Framework过滤网格行

时间:2013-12-03 11:39:47

标签: c# asp.net entity-framework

我对Entity Framework相对较新。我已经学会了如何操作EF中的数据以及使用C#在网格视图和下拉列表中进行数据绑定的基础知识。但我只是无法从数据库中的表中过滤记录(行)并将它们绑定到网格。以下是我尝试过的几种方法:

要绑定完整的表格(这可以很好地使用b-e-atiti)

em_dbEntities1 db = new em_dbEntities1();   //"em_dbEntities1" is the Database 
gv_testef.DataSource = db.contacts ;        //"contact" is the table
gv_testef.DataBind();                       //"gv_testef" is the gridview

根据条件提取单行并与GRIDVIEW结合(这可能是失败的)

em_dbEntities1 db = new em_dbEntities1();
contact con = db.contacts.SingleOrDefault(p => p.id == 2);

gv_testef.DataSource = con ;
gv_testef.DataBind();

第二种方法:

gv_testef.DataSource = db.contacts.SingleOrDefault(p => p.id == 2);

这又失败了。

请在这方面提供帮助。

1 个答案:

答案 0 :(得分:2)

您应该将网格绑定到项目集合 - .SingleOrDefault返回单个元素,而db.contacts是集合。

要进行过滤,您应该尝试使用.Where

em_dbEntities1 db = new em_dbEntities1();
gv_testef.DataSource = db.contacts.Where(p => p.id == 2);
gv_testef.DataBind();