Dapper 如何实施“;不在”;带有简洁扩展谓词的子句?

Dapper 如何实施“;不在”;带有简洁扩展谓词的子句?,dapper,dapper-extensions,Dapper,Dapper Extensions,我发现了如何使用简洁的扩展在子句中实现 现在,我想实现不在子句中。 因此,我希望SQL查询如下所示: SELECT * FROM MyTable WHERE MyField NOT IN (param1, param2) 但我在中找不到关于not的任何信息,或者在Dapper扩展中找不到not子句 如何使用简洁的扩展谓词实现不在子句中?请参阅(也有相关链接)以了解如何实现子句中的 要将上面提到的IN子句转换为NOT IN子句,请使用最后一个bool NOT参数。 这是可选参数,默认值为fals

我发现了如何使用简洁的扩展在子句中实现

现在,我想实现
不在
子句中。
因此,我希望SQL查询如下所示:

SELECT * FROM MyTable
WHERE MyField NOT IN (param1, param2)
但我在
中找不到关于
not的任何信息,或者在Dapper扩展中找不到
not
子句

如何使用简洁的扩展谓词实现
不在
子句中?

请参阅(也有相关链接)以了解如何实现
子句中的

要将上面提到的
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;
}
公共静态类谓词
{
公共静态IBetweenPredicate-Between(表达式表达式,值之间,bool not=false),其中T:class;
存在公共静态IExistPredicate(IPredicate谓词,bool not=false),其中TSub:class;
公共静态IFieldPredicate字段(表达式、运算符op、对象值、bool not=false),其中T:class;
公共静态IPropertyPredicate属性(表达式表达式、运算符op、表达式表达式expression2、bool not=false)
T:在哪里上课
式中T2:类;
}
示例代码如下所示:

var predicate = Predicates.Field<Customer>
                (f => f.CustomerID, Operator.Eq, listOfIDs, true);
var谓词=谓词.Field
(f=>f.CustomerID,Operator.Eq,listOfIDs,true);
观察上述代码中最后一个参数的值
true
listOfIDs
是您的数据类型的
IEnumerable

有关更多源代码,请参阅。

请参阅(也有相关链接),以了解如何在
子句中实现

要将上面提到的
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;
}
公共静态类谓词
{
公共静态IBetweenPredicate-Between(表达式表达式,值之间,bool not=false),其中T:class;
存在公共静态IExistPredicate(IPredicate谓词,bool not=false),其中TSub:class;
公共静态IFieldPredicate字段(表达式、运算符op、对象值、bool not=false),其中T:class;
公共静态IPropertyPredicate属性(表达式表达式、运算符op、表达式表达式expression2、bool not=false)
T:在哪里上课
式中T2:类;
}
示例代码如下所示:

var predicate = Predicates.Field<Customer>
                (f => f.CustomerID, Operator.Eq, listOfIDs, true);
var谓词=谓词.Field
(f=>f.CustomerID,Operator.Eq,listOfIDs,true);
观察上述代码中最后一个参数的值
true
listOfIDs
是您的数据类型的
IEnumerable

有关更多源代码,请参阅