【问题标题】:using IQueryable to filter gridview using ids使用 IQueryable 过滤使用 ids 的 gridview
【发布时间】:2014-09-06 20:28:44
【问题描述】:

您好,提前致谢,

我有几个函数可以改变我的网格视图。所以要知道当前视图中的内容,我想跟踪 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.NotSupportedException”类型的异常发生在 System.Data.Entity.dll 但未在用户代码中处理

附加信息:LINQ to Entities 无法识别该方法 'System.String ToString()' 方法,而这个方法不能 翻译成商店表达式。

【问题讨论】:

    标签: c# asp.net linq gridview iqueryable


    【解决方案1】:

    嗯,信息比较清楚,不能用.ToString()

    在 linq to entity 中,您可以使用SqlFunctions.StringConvert... 将一些数值转换为字符串。它仅适用于小数和双精度,但您可以将 int 强制转换为双精度。

    我猜你的错误就行了

    p.BaseId.ToString().Contains(id)
    

    如果BaseId 是一个int,你可以把它替换为

    SqlFunctions.StringConvert((double)p.BaseId).Contains(id)
    

    【讨论】:

    • Althaus 谢谢,我没有再遇到这个错误,但我的查询计数在循环之外出现 0,这没有将任何数据放入数据源中。
    • @Neo84 好吧,当你需要 OR 时,我猜你的“累积”在哪里做 AND 子句之类的事情?仅凭该代码不容易回答...
    • ahhh 是或确实有帮助,但如果计算数据库中的任何行,而不是网格视图的当前状态。任何想法为什么会发生这种情况。这就是我想使用 IQueryable 的原因。
    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多