使用谓词进行日期比较的Dapper扩展



如何使用谓词组比较日期值

这就是我一直在尝试做的

    var predicateGroup = new PredicateGroup { Operator = GroupOperator.And, Predicates = new List<IPredicate>() };
    predicateGroup.Predicates.Add(Predicates.Field<Contents>(f => f.Guid, Operator.Eq, staticContents.Guid));
    predicateGroup.Predicates.Add(Predicates.Field<Contents>(f => f.StartDate, Operator.Ge, DateTime.UtcNow));
    predicateGroup.Predicates.Add(Predicates.Field<Contents>(f => f.EndDate, Operator.Le, DateTime.Now));

我正在尝试选择具有特定GUID的值,并希望它位于所需的开始日期和结束日期之间。

我也试过BetweenValue,但它似乎没有帮助。

比较日期:

代替做:

predicateGroup.Predicates.Add(Predicates.Field<Contents>(f => f.EndDate, Operator.Le, DateTime.Now));

您也可以在日期的ISO8601字符串表示上进行比较。"2015-12-31"。像这样:

predicateGroup.Predicates.Add(Predicates.Field<Contents>(f => f.EndDate, Operator.Le, "2015-12-31"));

在另一篇堆栈溢出文章中阅读有关SQL中查询比较日期的更多信息。这篇文章还链接到MSDN页面,解释如何为日期和日期时间设置区域性不变字符串格式(如果这可能是您的问题)。

还请记住,参数Operator.Ge默认情况下将渲染">=",而Operator.Gt则默认情况下渲染">"。Operator.Le/Operator.Lt也是如此。(这可能不是问题所在,因为.Gt和.Lt会缩小您的"间隔")

最新更新