Linq Compare Year-Month or Year-Week

Date: 2026-02-02
var begin = new DateOnly(DateTime.Now.Year, DateTime.Now.Month, 1);
var end = new DateOnly(DateTime.Now.Year, DateTime.Now.Month, 1);

var beginValue = begin.Year * 100 + begin.Month;
var endValue   = end.Year * 100 + end.Month;

var forecast = await GetRepository<DmArticleForecast>(unitOfWork)
    .AsQueryable()
    .Where(x => elementGroupsToShow.Contains(x.ElementGroup))
    .Where(x => (x.Year * 100 + x.Month) >= beginValue)
    .Where(x => (x.Year * 100 + x.Month) <= endValue)
    .ToListAsync();
    
// or with two columns (using indexes)    
.AsQueryable()    
.Where(x =>
    (x.Year > begin.Year || (x.Year == begin.Year && x.Month >= begin.Month)) &&
    (x.Year < end.Year   || (x.Year == end.Year   && x.Month <= end.Month))
)
.ToListAsync();
100460cookie-checkLinq Compare Year-Month or Year-Week