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.

Foi útil?

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 <!!!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top