2010-02-25 5 views
4

Возможно ли это сделать в SQL в Linq to SQL?Linq2SQL Где между

Select field from table where date between '2010-01-01' and '2010-01-31'; 

Я понимаю, что я мог сделать:

where (monthBeginDate < a.StopDateActual && a.StopDateActual < monthEndDate) 

Но мне было интересно, если я мог бы сделать первый. У меня есть плохая привычка прикручивать меньше и больше, чем от подобных утверждений.

+0

Dupe: http://stackoverflow.com/questions/1447635/linq-between-operator – tvanfosson

+1

Решение ОЧЕНЬ сложное –

+0

Извините, для меня не было очевидным, что это был тот же вопрос. Для меня это был другой вопрос. Я полагал, что мой вопрос был более прямым. Кажется, это было больше, чем я. –

ответ

4

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

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

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

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

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

Нет, между оператором нет. – AxelEckenberger

+0

Это было не так важно. Я просто подумал, что, возможно, что-то упустил. Рад видеть, что я не был. –

+1

Имеет успех, см. Мой ответ ... – AxelEckenberger

5

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

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

where Between(a.StopDateActual, monthBeginDate, monthEndDate) 

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

+0

+1 Хороший комментарий –

 Смежные вопросы

  • Нет связанных вопросов^_^