linq to sql: 2 哪里不工作

linq to sql: 2 where's not working

我在 LINQ TO 中这样做 SQL:

var query = Database.ExtendedUsers.Select(x => x).Where(x => x.Acolumn >= 4);

生成正确的 SQL 语法(带 where 子句)。 如果我添加第二个 where,它会被忽略:

var query = Database.ExtendedUsers.Select(x => x).Where(x => x.Acolumn >= 4);
query.Where(x => x.AnotherColumn.Equals(2));

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

基本上,我想动态添加 where's

query.Where(...);
query.Where(...);
query.Where(...);
query.ToList(); /: result

问题是 Where returns 新的 IQueryable 实现(在用于生成 SQL 的表达式树中添加了适当的节点)。所以基本上,您只需要将结果分配回 query 变量:

query = query.Where(x => x.AnotherColumn.Equals(2));

编辑:请不要更改我的 post 并添加我没有 posted 的代码(改为添加评论)。 OP 想要动态使用 where (f.e。根据条件)。示例:

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

因此,Where(x => x.Acolumn >= 4 && x.AnotherColumn.Equals(2)) 并不总是解决方案,我认为这不是 OP 所需要的。