0

我试图在我的代码中使用 Dynamic Linq 库,但它给出了这个错误

在当前范围或上下文中无法解析“UserId”。确保所有引用的变量都在范围内,加载了所需的模式,并且正确地引用了命名空间。接近简单标识符,第 6 行,第 1 列

这是我的代码

 TestDB db = new TestDB();
        string filter = "UserId == 15";
        //var searchResult =
        GridView1.DataSource = from x in db.SearchSummaries.Where(filter)
                               select x;
        GridView1.DataBind();
4

2 回答 2

2

对动态 Linq 不太熟悉,但从您的错误消息中:

在当前范围或上下文中无法解析“UserId”。确保所有引用的变量都在范围内,加载了所需的模式,并且正确地引用了命名空间。接近简单标识符,第 6 行,第 1 列

请试试这个:

1.) 列 UserId 是整数而不是字符串吗?你需要使用:

    string filter = "UserId='15'";

2.) 尝试将 filter 参数作为第二个参数传入:

    GridView1.DataSource = db.SearchSummaries.Where("UserId = @0", 15); 

3.) 我不知道您是否能够运行“常规”Linq 查询,但如果可以,请尝试:

    GridView1.DataSource = db.SearchSummaries.Where(search => search.UserId == 15);                               
    GridView1.DataBind();
于 2012-09-27T17:58:44.937 回答
1

试试这个:

TestDB db = new TestDB();
    string filter = "xi => xi.UserId == 15";
    //var searchResult =
    GridView1.DataSource = from x in db.SearchSummaries.Where(filter)
                           select x;
    GridView1.DataBind();

或这个:

TestDB db = new TestDB();
    string filter = "UserId=15";
    //var searchResult =
    GridView1.DataSource = from x in db.SearchSummaries.Where(filter)
                           select x;
    GridView1.DataBind();

编辑:我意识到这不是动态 linq ......但只要你的数据结构正确,它就应该工作。你能把那个贴出来吗?

于 2012-09-27T17:20:06.747 回答