Внутри дат базы данных сторонних производителей хранятся в виде строк в формате YYYYMMDD.Операции преобразования даты в linq в объекты
В SQL я мог бы использовать следующее заявление:
WHERE convert(datetime,convert(varchar(8),a.appt_date,112)) = convert(datetime,convert(varchar(8), dateadd(dd,+1,getdate()), 112))
Есть ли что-то подобное я могу сделать в LINQ к EF? Или это мой единственный вариант сделать это в памяти, например:
dim data = (from item in entities.itemsSet).ToList()
dim filtered = from item in data
where Convert.ToDateTime(shift.starttime) >= startDate
&& Convert.ToDateTime(shift.endtime) < endDate
select item
Вы попробовали свой второй пример без 'ToList()'? Он должен просто работать ([link] (http://stackoverflow.com/q/992189/335858)). – dasblinkenlight
Во-первых, это * не * как вы сравниваете даты в SQL. Вы должны указать поле 'date' из' datetime' и сравнить его с параметром даты. SQL Server достаточно умен, чтобы преобразовать его в запрос диапазона. Во-вторых, почему 'Convert.ToDateTime', если базовое поле уже является датой? Если это не так, он использует неправильный тип и должен быть исправлен первым. –
Только что заметил, что вы * делаете * хранить даты как строки. Сначала вам нужно исправить эту проблему. SQL Server имеет тип 'date'. Нет причин использовать строки для этого, и по многим причинам вы не должны этого делать. –