0

述語グループを使用して日付値を比較する方法

これは私がやろうとしてきたことです

    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 も試しましたが、役に立たないようです。

4

1 に答える 1

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"));

SQL で日付を比較するクエリの詳細については、別のスタック オーバーフローの投稿を参照してください。この投稿は 、日付のカルチャに不変の文字列形式をフォーマットする方法と、それが問題である場合は日付時刻をフォーマットする方法を説明するMSDN ページにもリンクしています。

また、引数Operator.Geはデフォルトで ">=" をレンダリングし、Operator.Gtはデフォルトで ">" をレンダリングすることも覚えておいてください。同じことがOperator.Le / Operator.Ltにも当てはまります。(.Gt と .Lt は「間隔」を縮小するため、これはおそらくここでは問題ではありません)

于 2016-01-28T21:22:54.623 に答える