如何使用谓词组
比较日期值这就是我一直在努力做的事情
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的值,并希望它介于所需的startdate和enddate之间。
我也试过了BetweenValue,但似乎有点帮助。
答案 0 :(得分:1)
比较日期:
而不是:
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的更多信息。这篇文章还链接到an MSDN page,解释如何格式化日期和日期时间的文化不变字符串格式,如果这可能是您的问题。
另请注意,默认情况下,参数 Operator.Ge 会呈现“&gt; =”,而默认情况下 Operator.Gt 会呈现“&gt;”如果可能的话。 Operator.Le / Operator.Lt 也是如此。 (这可能不是问题,因为.Gt和.Lt会缩小你的“间隔”)