Pregunta

¿Es posible hacer esto en SQL en Linq a SQL?

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

Me doy cuenta de que podría hacer:

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

Pero tenía curiosidad si podía hacer lo primero. Tengo el mal hábito de arruinar la menor y mayor que en declaraciones como esa.

¿Fue útil?

Solución

No, esa es la forma de hacerlo. C# no tiene un operador entre el operador.

Siempre puedes hacer trampa y escribir un método de extensión como yo:

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

Entonces puedes hacer esto ;-)

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

Otros consejos

Podrías hacer lo siguiente:

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

where Between(a.StopDateActual, monthBeginDate, monthEndDate)

Sin embargo, debe tener en cuenta que esto funciona en IEnumerable Y no en IQueryable, es decir, los resultados se extraerán de la fuente de datos antes de que se aplique. Esto podría ser un problema de rendimiento en el caso de una gran cantidad de datos, por lo tanto, su lugar donde CLASUE es lo mejor que puede hacer ... ¡Solo tenga cuidado con el> y <!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top