質問

私は素敵なLINQチャレンジを持っています。フィルタ機能を使用して日付のデータをフィルタリングしたいと思います。それはこのように機能するべきです:

ApplyDateFilterEx(query,null, DateTime.Today, s => s.CreatedDate);
.

今日までのすべての '積荷'が返されるようにクエリをフィルタリングする必要があります。クエリオブジェクトはIQueryableで、クエリ全体はEF5によって評価されるべきであり、したがってSQLに変換する必要があります。

これは私がこれまでのものです(コンパイルしない):

private static IQueryable<Shipment> ApplyDateFilterEx(IQueryable<Shipment> query, DateTime? minDate, DateTime? maxDate, Expression<Func<Shipment, DateTime?>> dateMember)
    {
        if (minDate != null)
        {
            //convert func to expression so EF understands
            Expression<Func<Shipment, bool>> where = x => minDate <= dateMember(x);
            query = query.Where(where);
        }
        if (maxDate != null)
        {
            Expression<Func<Shipment, bool>> where = x => dateMember(x) <= maxDate;
            query = query.Where(where);
        }

        return query;
    }
.

式のS=> DateTimeを変換したいと思えますか?評価するためにS=> BOOLにする。どうやってこれを働くことができますか?

読書ありがとうございました。 Martijn

udpate: 私はこれに答えました(RDvanbuurenのおかげで)

 var predicate = Expression.Lambda<Func<Shipment, bool>>(
                    Expression.GreaterThanOrEqual(
                        selector.Body,
                        Expression.Constant(dateFilter.MinDate, typeof (DateTime?))
                        ), selector.Parameters);
.

役に立ちましたか?

解決

は見てみましょう 式パラメータを使用した方法C#

私はそれがあなたが必要とするものであるが、Expression.GreaterThanoreQualまたはExpression.lessThanoreQualであると思います。頑張って!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top