无法在当前范围或上下文中解析动态Linq .Net 4错误“userid”

时间:2012-09-27 17:17:19

标签: linq entity-framework .net-4.0 dynamic-linq

我正在尝试在我的代码中使用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();

2 个答案:

答案 0 :(得分:2)

不熟悉动态Linq,但是从错误消息中可以看出:

  

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

请试试这个:

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

    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();

答案 1 :(得分: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 ...但只要你的数据结构正确,它就应该工作。你可以发帖吗?