我正在尝试在执行大量这些操作后为C#中的Dapper-Extensions创建一个相对简单的谓词语句,但在一种情况下,我需要比较两个字段而不是字段和固定对象值:
multiPred.Add<ChargingProfile>(new PredicateGroup
{
Operator = GroupOperator.And,
Predicates = new List<IPredicate>
{
Predicates.Field<ChargingProfile>(f => f.EndDt, Operator.Eq, null, true),
// the below statement should check if f.NextChargeDt is greater than f.EndDt
// (string value is obviously not correct, but to illustrate)
Predicates.Field<ChargingProfile>(f => f.NextChargeDt, Operator.Gt, "f.EndDt")
}
});
我无法(或者不知道如何)访问value参数中的表达式,因此必须有其他方法来执行此操作?
感谢您提供的任何见解。
答案 0 :(得分:2)
您可以使用Property
创建谓词:
var predicate = Predicates.Property<TwoFieldsTable, TwoFieldsTable>(f => f.Field1, Operator.Eq, f2 => f2.Field2);
var res = conn.GetList<TwoFieldsTable>(predicate);