我在LINQ TO SQL中这样做:
var query = Database.ExtendedUsers.Select(x => x).Where(x => x.Acolumn >= 4);
生成正确的SQL语法(使用where子句)。 如果我在第二个地方添加,则会被忽略:
var query = Database.ExtendedUsers.Select(x => x).Where(x => x.Acolumn >= 4);
query.Where(x => x.AnotherColumn.Equals(2));
第二个where子句未添加到SQL查询中。 我做错了什么?
基本上,我想动态添加
query.Where(...);
query.Where(...);
query.Where(...);
query.ToList(); /: result
答案 0 :(得分:5)
问题是Where
返回新的IQueryable
实现(在Expression Tree中添加了用于生成SQL的正确节点)。所以基本上,你只需要将结果分配回query
变量:
query = query.Where(x => x.AnotherColumn.Equals(2));
编辑:请不要更改我的帖子并添加我没有发布的代码(改为添加评论)。 OP想要动态使用(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需要的东西。