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 所需要的。
我在 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 所需要的。