使用 Predicate 进行日期比较的 Dapper 扩展
Dapper Extensions for Date comparision using Predicate
如何使用谓词组比较日期值
这就是我一直在努力做的事情
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"));
阅读更多关于 Query comparing dates in SQL in another Stack overflow post. This post also links to an MSDN page 解释如何格式化日期和日期时间的文化不变字符串格式(如果这可能是您的问题)。
还要记住参数 Operator.Ge 默认会呈现“>=”,而 Operator.Gt如果可能的话,默认情况下呈现“>”。 Operator.Le/Operator.Lt也是如此。 (这可能不是这里的问题,因为 .Gt 和 .Lt 会缩小你的 'between' 间隔)
如何使用谓词组比较日期值
这就是我一直在努力做的事情
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"));
阅读更多关于 Query comparing dates in SQL in another Stack overflow post. This post also links to an MSDN page 解释如何格式化日期和日期时间的文化不变字符串格式(如果这可能是您的问题)。
还要记住参数 Operator.Ge 默认会呈现“>=”,而 Operator.Gt如果可能的话,默认情况下呈现“>”。 Operator.Le/Operator.Lt也是如此。 (这可能不是这里的问题,因为 .Gt 和 .Lt 会缩小你的 'between' 间隔)