Linq2SQL Где Между
Возможно ли сделать это в SQL в Linq to SQL?
Select field from table where date between '2010-01-01' and '2010-01-31';
Я понимаю, что мог сделать:
where (monthBeginDate < a.StopDateActual && a.StopDateActual < monthEndDate)
Но мне было любопытно, смогу ли я сделать первое. У меня есть плохая привычка испортить меньше и больше, чем в таких заявлениях.
2 ответа
Нет, это способ сделать это. C# не имеет оператора между, я считаю.
Вы всегда можете обмануть и написать метод расширения, как я:
public static bool BetweenDates (this DateTime checker, DateTime floor, DateTime ceiling)
{
return (checker <= ceiling) && (checker >= floor);
}
Тогда вы можете сделать это;-)
.Where(s => s.StopDateActual.BetweenDates(monthBeginDate, monthEndDate));
Вы можете сделать следующее:
public bool Between(DateTime value, DateTime from, DateTime To) {
return value > from && value < to;
}
where Between(a.StopDateActual, monthBeginDate, monthEndDate)
Тем не менее, вы должны отметить, что это работает на IEnumerable
и не на IQueryable
то есть результаты будут извлечены из источника данных до того, как будет применено. Это может быть проблемой с производительностью в случае большого количества данных, поэтому, где вы лучше всего можете использовать clasue, просто будьте осторожны с> и