2011-11-15 11 views
0

テーブルにDateTimeOfBidという列があります。今日のDateTimeOfBidが30日以内のすべてのエンティティを取得する必要があります。DateTime列が今日から30日以内にあるかどうかを単純にチェックする方法は?

私は自分のデータにアクセスするためにEntity-Framework 4を使用しています。

EFUserAuctionLanceRepository userAuctionLanceRepository = new EFUserAuctionLanceRepository(); 

var potentialDiscount = userAuctionLanceRepository.FindAllUserAuctionLances() 
                .Where(u => u.UserId == user.UserId && u.AccountableForShopDiscount == true); 

var discount = potentialDiscount.Where(p => p.DateTimeOfLance is within 30 days of today?) 

がどのように私はこの小さなクエリを書くことができます:ここでは

は、私がこれまで持っている何ですか?

答えて

4

を定義します。

p => p.DateTimeOfLance >= today.AddDays(-30) && 
    p.DateTimeOfLance <= today.AddDays(30) 

DateTime today = DateTime.Today; 

をして、ラムダ式を使用するEFは、しかし、次の操作を行うことができなければならない場合があります:

DateTime today = DateTime.Today; 
DateTime thirtyDaysAgo = today.AddDays(-30); 
DateTime thirtyDaysFromNow = today.AddDays(30); 


p => p.DateTimeOfLance >= thirtyDaysAgo && 
    p.DateTimeOfLance <= thirtyDaysFromNow 
+0

これはDB上で実行されるので、両方の日付を事前に計算する必要があります。そうでなければ、これは動作しません。 – BrokenGlass

+0

@BrokenGlass:ありがとうございます。 – jason

0

あなたもこれを行うことができます。 ...

if (DateTime.Now.AddDays(-30).CompareTo(date) > 0) 
関連する問題