[英]using IQueryable to filter gridview using ids
嗨,谢谢你,
我有几个函数可以更改我的gridview。 因此,要了解当前视图中的内容,我想跟踪ID。 当前代码如下:
public void getCurrent_GridView()
{
if (GridViewFacility.DataKeys.Count > 0)
{
WISSModel.WISSEntities context = new WISSModel.WISSEntities();
//Prepare to build a "Base" query:
IQueryable<WISSModel.Base> searchListQuery = context.Bases;
for (int i = 0; i < GridViewFacility.Rows.Count; i++)
{
String id = GridViewFacility.DataKeys[i].Value.ToString();
//Refine query, one search term at a time
searchListQuery =
searchListQuery.Where(p => p.isDeleted == false && (p.BaseId.ToString().Contains(id)));
//txtSearch.Text += id + " ";
}
txtSearch.Text = "test" + searchListQuery.ToList().Count;
GridViewFacility.DataSource = searchListQuery.ToList();
GridViewFacility.DataBind();
}
}
protected void GridViewFacility_RowEditing(object sender, GridViewEditEventArgs e)
{
getCurrent_GridView();
GridViewFacility.EditIndex = e.NewEditIndex;
LoadData();
}
在VS2013中,出现此错误:
System.Data.Entity.dll中发生类型为'System.NotSupportedException'的异常,但未在用户代码中处理
附加信息 :LINQ to Entities无法识别方法'System.String ToString()',并且该方法无法转换为商店表达式。
好吧,消息很清楚,您不能使用.ToString()
在linq to实体中,可以使用SqlFunctions.StringConvert
...将某些数字值转换为字符串。 它仅适用于十进制和双精度,但您可以将int强制转换为双精度。
我想你的错误就在网上
p.BaseId.ToString().Contains(id)
如果BaseId
是一个int,则可以将其替换为
SqlFunctions.StringConvert((double)p.BaseId).Contains(id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.