2016-11-21 10 views
1

LINQを使用してdbからIQueryableの結果を照会しました。これで、date_sentフィールドに基づいてすべての行をフィルタリングする必要がありました。日数は、date_sentから現在の日付までに計算する必要があります。この総数。 0日から30日の範囲内で落ちる日数を取得する必要があります。どうすればいいのですか。私は以下のコードを持っていますが、動作しません。エラーは発生しませんが、適切にフィルタリングされません。合計日数に基づく日付範囲の間に行を取得

query = query.Where(x => x.DATE_SENT != null); 

query = query.Where(x => (int)(EntityFunctions.DiffDays(currentDate, (DateTime)x.DATE_SENT)) >= 0 && 
         (int)(EntityFunctions.DiffDays(currentDate, (DateTime)x.DATE_SENT)) <= 30);               

どのように処理できるかについてのガイダンスは素晴らしいものです。

+0

どのように正しくフィルタリングされません。あなたは何を得るのですか?代わりにあなたは何を期待していますか? – hometoast

+0

私は6行を期待していますが、1行だけが返されます。私はdate_sentが0-30daysの間に落ちるのを確認しましたが、表示されません。 –

+0

過去30日間の行を取得する必要がありますか? –

答えて

1

このクエリを使用して取得できます。

var dtDiff = DateTime.Now.AddDays(-30); 
query = query.Where(z=> z.DATE_SENT >= dtDiff); 

31〜60日

var dtDiff31 =DateTime.Now.AddDays(-31); 
    var dtDiff60 =DateTime.Now.AddDays(-60); 
    query = query.Where(z=> z.DATE_SENT >= dtDiff60 && z.DATE_SENT <= dtDiff31); 
+0

あなたのコードを試しました。 "LINQ to EntitiesはSystem.DateTime AddDays(Double)メソッドを認識しません。このメソッドはストア式" –

+0

@BVidhyaに変換することはできません。 –

+0

0-30daysのために働くおかげで、私は次の範囲31-60daysが必要です。どのように範囲を設定しますか? –

0

あなただけの日付の範囲でフィルタしたいようだ:場合

DateTime filterDate = currentDate.AddDays(-30); 

query = query.Where(x => x.DATE_SENT >= filterDate); 

あなたの2番目の条件を追加変えることができcurrentDate

query = query.Where(x => x.DATE_SENT >= filterDate && x.DATE_SENT < currentDate); 
関連する問題