2016-11-21 84 views
1

我從數據庫中使用LINQ查詢了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行,但只有一行被返回。我已確認date_sent在0-30天之間,但不會顯示。 –

+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-30天,我需要下一個範圍31-60天。你如何設定範圍? –

0

看來你只是想通過日期範圍過濾:

DateTime filterDate = currentDate.AddDays(-30); 

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

如果您currentDate可以改變你添加第二個條件:

query = query.Where(x => x.DATE_SENT >= filterDate && x.DATE_SENT < currentDate);