Pergunta
É possível fazer isso no SQL no LINQ para SQL?
Select field from table where date between '2010-01-01' and '2010-01-31';
Eu percebo que poderia fazer:
where (monthBeginDate < a.StopDateActual && a.StopDateActual < monthEndDate)
Mas eu estava curioso se pudesse fazer o primeiro. Eu tenho um mau hábito de estragar tudo o que e maior do que em declarações como essa.
Solução
Não, essa é a maneira de fazer isso. C# não tem um operador entre eu, acredito.
Você sempre pode trapacear e escrever um método de extensão como eu:
public static bool BetweenDates (this DateTime checker, DateTime floor, DateTime ceiling)
{
return (checker <= ceiling) && (checker >= floor);
}
Então você pode fazer isso ;-)
.Where(s => s.StopDateActual.BetweenDates(monthBeginDate, monthEndDate));
Outras dicas
Você pode fazer o seguinte:
public bool Between(DateTime value, DateTime from, DateTime To) {
return value > from && value < to;
}
where Between(a.StopDateActual, monthBeginDate, monthEndDate)
No entanto, você deve observar que isso funciona IEnumerable
e não ligado IQueryable
, ou seja, os resultados serão retirados da fonte de dados antes do Where é aplicado. Isso pode ser um problema de desempenho no caso de uma grande quantidade de dados; portanto, você é o melhor que você pode fazer ... apenas tenha cuidado com o> e <!!!