Linq2SQL Где Между - PullRequest
       7

Linq2SQL Где Между

4 голосов
/ 25 февраля 2010

Возможно ли сделать это в 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 ]

5 голосов
/ 25 февраля 2010

Вы можете сделать следующее:

public bool Between(DateTime value, DateTime from, DateTime To) {
   return value > from && value < to;
}

where Between(a.StopDateActual, monthBeginDate, monthEndDate)

Однако вы должны заметить, что это работает на IEnumerable, а не на IQueryable, т.е. результаты будут извлечены из источника данных до того, гдеприменены.Это может быть проблемой с производительностью в случае большого количества данных, поэтому, где вы лучше всего можете использовать clasue, просто будьте осторожны с> и <!!! </p>

4 голосов
/ 25 февраля 2010

Нет, это способ сделать это. Я полагаю, что в C # нет оператора оператора.

Вы всегда можете обмануть и написать метод расширения, как я:

public static bool BetweenDates (this DateTime checker, DateTime floor, DateTime ceiling)
{
    return (checker <= ceiling) && (checker >= floor);
}

Тогда вы можете сделать это; -)

.Where(s => s.StopDateActual.BetweenDates(monthBeginDate, monthEndDate));
...