2016-03-04 102 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();