Я знаю, что это старый вопрос, но в вашем конкретном случае вместо использования DBFunctions
, как предложено @GertArnold, не могли бы вы просто инвертировать операцию, чтобы убрать рассматриваемую арифметику из лямбды?
В конце концов clientDateTime
и time24
являются фиксированными значениями, поэтому нет необходимости пересчитывать их разность на каждой итерации.
Like:
TimeSpan time24 = new TimeSpan(24, 0, 0);
TimeSpan time18 = new TimeSpan(18, 0, 0);
var clientdtminus24 = clientDateTime - time24;
// first get today's sleeping hours
List<Model.Sleep> sleeps = context.Sleeps.Where(
o => (clientdtminus24 < o.ClientDateTimeStamp) &&
o.ClientDateTimeStamp.TimeOfDay > time18 &&
clientDateTime.TimeOfDay < time18 &&
o.UserID == userid).ToList();
Этот рефакторинг обычно возможен, еслиВы пытаетесь сравнить сохраненную дату и время, сдвинутые на временную метку, с другой датой.