2011-11-15 83 views
0

我在我的表中有一個名爲DateTimeOfBid的列,我需要獲取DateTimeOfBid在今天30天內的所有實體。如何簡單檢查DateTime列是否在今天的30天之內?

我正在使用實體框架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

定義:

DateTime today = DateTime.Today; 

,然後使用lambda表達式

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

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) 
相關問題