2016-03-04 97 views
2

我試圖創建一個Linq to Entities查詢來選擇兩個日期之間的記錄。Linq查詢日期範圍不返回任何記錄?

TimeCards.Where(t => t.StartTime >= DbFunctions.CreateDateTime(2015,1,31,null,null,null) && t.EndTime < DbFunctions.CreateDateTime(2017,2,14,null,null,null)) 

這是我的數據集,我期待已返回

ID  StartTime    EndTime  
1165 2016-02-01 00:15:00.000 2016-02-01 17:00:00.000 
1166 2016-02-02 00:15:00.000 2016-02-02 17:00:00.000 
1167 2016-02-03 00:15:00.000 2016-02-03 17:00:00.000 

但我的結果回來爲0的記錄。

任何想法,爲什麼?

+1

「StartTime」,「EndTime」和「CreateDateTime」的數據類型是什麼?都是'DateTime'嗎?如果對所有'Nullable'類型使用'.Value',會發生什麼?類似於:'DbFunctions.CreateDateTime(2015,1,31,null,null,null).Value' – Ian

+0

您是否嘗試過不使用DbFunctions?同樣在這種情況下,你可以使用SQL profiler(如果它的sql服務器)來理解linq到sql查詢中的問題。 –

+0

可能是愚蠢的,但只是提出,你需要做ToList()在哪裏? – Anil

回答

1

請嘗試使用此代碼,它會根據您的需要爲您提供3條記錄。

DateTime startDate = new DateTime(2015, 1, 31, 0, 0, 0); 
DateTime endDate = new DateTime(2017, 2, 14, 0, 0, 0); 
List<anyTable> listOfRec = dbContext.anyTable.Where(row => row.StartDate > startDate && row.EndDate < endDate).ToList();