2016-03-04 2 views
2

Я пытаюсь создать запрос Linq to Entities, который выбирает записи между двумя датами.Linq Query с диапазоном дат, не возвращающим никаких записей?

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'? Что произойдет, если вы используете '.Value' для всех типов« Nullable »? Что-то вроде: 'DbFunctions.CreateDateTime (2015,1,31, null, null, null) .Value' – Ian

+0

Вы пробовали без использования DbFunctions? Также в таких ситуациях вы можете использовать SQL-профайлер (если его 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(); 
Смежные вопросы