修改SQL表达式中已有的where条件
本文关键字:where 条件 SQL 表达式 修改 | 更新日期: 2023-09-27 18:03:26
给定这个Sql表达式作为输入参数:(假设无法修改该输入参数的生成方式)
Db.From<Contact>().Where(C => C.Email != null).Or(C => C.Reference != null);
方法需要附加另一个条件,例如
exp.And(C.UserId == Session.UserId);
但是UserId条件必须为真,无论是否存在任何条件。但是由于原始Sql表达式使用"Or",因此不强制执行UserId条件。
所以最终的Sql应该是这样的:SELECT * FROM Contact WHERE (Email IS NOT NULL OR Reference IS NOT NULL) AND UserId == 12
现在生成的Sql如下:
SELECT * FROM Contact WHERE Email IS NOT NULL OR Reference IS NOT NULL AND UserId == 12
谁有什么想法?编辑:到目前为止,唯一有效的方法是破解WhereExpression,在原始Sql Expression的Where子句之前和之后添加()。只希望能有更好的办法
.Where(C => C.UserId == Session.UserId)