我在这里找到了如何IN
使用 Dapper Extensions 实现子句。
现在,我想实施NOT IN
条款。
所以,我期待 SQL 查询如下所示:
SELECT * FROM MyTable
WHERE MyField NOT IN (param1, param2)
但是我在 Dapper Extensions 中找不到任何关于NOT IN
or子句的内容。NOT
如何NOT IN
使用 Dapper Extensions Predicate 实现子句?
我在这里找到了如何IN
使用 Dapper Extensions 实现子句。
现在,我想实施NOT IN
条款。
所以,我期待 SQL 查询如下所示:
SELECT * FROM MyTable
WHERE MyField NOT IN (param1, param2)
但是我在 Dapper Extensions 中找不到任何关于NOT IN
or子句的内容。NOT
如何NOT IN
使用 Dapper Extensions Predicate 实现子句?
请参阅此答案(也有问题链接)以了解如何实施IN
子句。
要将IN
上面提到的子句转换为NOT IN
子句,请使用最后一个bool not
参数。
这是可选参数,默认值为false
.
这就是为什么; 即使如此明显,它也有点隐藏,因此未被发现。
文档也没有明确提及。
以下是 Dapper Extensions 源代码中定义的每个谓词的定义:
public static class Predicates
{
public static IBetweenPredicate Between<T>(Expression<Func<T, object>> expression, BetweenValues values, bool not = false) where T : class;
public static IExistsPredicate Exists<TSub>(IPredicate predicate, bool not = false) where TSub : class;
public static IFieldPredicate Field<T>(Expression<Func<T, object>> expression, Operator op, object value, bool not = false) where T : class;
public static IPropertyPredicate Property<T, T2>(Expression<Func<T, object>> expression, Operator op, Expression<Func<T2, object>> expression2, bool not = false)
where T : class
where T2 : class;
}
示例代码如下:
var predicate = Predicates.Field<Customer>
(f => f.CustomerID, Operator.Eq, listOfIDs, true);
观察true
上面代码中最后一个参数的值。这listOfIDs
是IEnumerable
您的数据类型。
更多源代码请参考这里。