我在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所需要的.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |