2016-05-21 27 views
0

我使用LINQ獲取特定日期範圍內的對象列表。例如,我現在使用DateTime格式:21.05.2016 0:00:00,我需要獲得1天前(5天前,3個月前,1年前,5年前)後發佈的新聞以及直到這一刻。我做了如下因素的方法:如何對日期範圍進行通用查詢?

List<MyObject> data = 
    DataDownloader.myList.Where(s => s.Date.Year >= fromDate.Year 
            && s.Date.Month >= fromDate.Month 
            && s.Date.Day >= fromDate.Day 
            && s.Date.Year <= toDate.Year 
            && s.Date.Month <= toDate.Month 
            && s.Date.Day <= toDate.Day).ToList(); 

TODATE是我當前的日期。

第1天::

fromDate = toDate; 

5天:我通過以下找到沒有fromdate

fromDate = toDate.AddDays(-5); 

三個月:

fromDate = toDate.AddMonths(-3); 

但是我得到了3個月的2個新聞。現在是21.04.2016 0:00:00和21.05.2016 0:00:00。所以你知道他們只有幾個月不同,因爲我現在的日期是21.05.2016。我做錯了什麼?我應該得到更多我知道的消息。

+2

你爲什麼要查詢每個組件分別,而不僅僅是's.Date> = fromDate'等? –

回答

2

你正在比較日期的每個元素,這不會給你正確的答案。

你說的'過去3個月'(從2016年2月21日至2016年5月21日),日期必須在21日至21日之間,2至5日之間以及2016年和2016年

您正在尋找2016年2月21日,21/03/2016,21/04/2016或21/05/2016,而不是所有日期之間。

只是比較日期:

list.Where(x => x.Date >= fromDate && x.Date <= toDate).ToList();