linq to sql:2哪里不行

Poe*_*HaH 0 c# linq-to-sql

我在LINQ TO SQL中这样做:

var query = Database.ExtendedUsers.Select(x => x).Where(x => x.Acolumn >= 4);
Run Code Online (Sandbox Code Playgroud)

它生成正确的SQL语法(使用where子句).如果我添加第二个,则忽略它:

var query = Database.ExtendedUsers.Select(x => x).Where(x => x.Acolumn >= 4);
query.Where(x => x.AnotherColumn.Equals(2));
Run Code Online (Sandbox Code Playgroud)

第二个where子句未添加到SQL查询中. 我究竟做错了什么?

基本上,我想动态添加的地方

query.Where(...);
query.Where(...);
query.Where(...);
query.ToList(); /: result
Run Code Online (Sandbox Code Playgroud)

小智 5

问题是Where返回新的IQueryable实现(在Expression Tree中添加了用于生成SQL的适当节点).所以基本上,你只需要将结果分配回query变量:

query = query.Where(x => x.AnotherColumn.Equals(2));
Run Code Online (Sandbox Code Playgroud)

编辑:请不要更改我的帖子并添加我没有发布的代码(添加评论代替).OP想要动态使用(fe基于条件).样品:

var query = Context.MyTable.Where(tbl => tbl.Col > 4);
if (someConditionThatCannotBeEvalutedInLinqToSql)
{
   query = query.Where(2)tabl => table.Col2 == 5);
}
Run Code Online (Sandbox Code Playgroud)

所以,Where(x => x.Acolumn >= 4 && x.AnotherColumn.Equals(2))并不总是解决方案,我不相信这是OP所需要的.