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, просто будьте осторожны с> и

Другие вопросы по тегам