linq to sql:2其中不起作用

时间:2015-01-21 08:33:43

标签: c# linq-to-sql

我在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

1 个答案:

答案 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需要的东西。