Я играю с "неделями".Я извлекаю данные из БД следующим образом:
![enter image description here](https://i.stack.imgur.com/HNxq3.png)
Мой объект в c # выглядит так:
public class DemoObj
{
public decimal Amount { get; set; }
public int Month { get; set; }
public int Week { get; set; }
}
Я группирую данные, как я написал справа на изображении, и это прекрасно работает, и в конце это выглядит так:
Month 6
Week 2
Month 8
Week 2
Month 8
Week 3
Но я бы хотел добиться следующего:
Проверьте, не существует ли всех 4 недель в одном месяце, например, для месяца со значением 8, давайте добавим отсутствующие недели, даже если это будет пустой объект, будет заполнено значение недели заполнения, поэтому конечное значение будет выглядеть следующим образом:
Month 8
Week 1
Month 8
Week 2
Month 8
Week 3
Month 8
Week 4
Итак, проверьте, есть ли не все 4 недели для значения 8, если нет, то давайте добавим отсутствующие ..
Вот мой текущий код:
var query = await _context.product
.AsNoTracking()
.Where(x => (x.PaymentDate != null && x.PaymentDate > DateTime.UtcNow.AddMonths(-4))).ToListAsync();
var groupedData = query.GroupBy(x => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(x.PaymentDate ?? DateTime.UtcNow, CalendarWeekRule.FirstDay, DayOfWeek.Monday))
.Select(product => new productsChartDTO
{
Week = GetWeekNumberOfMonth(product.FirstOrDefault().PaymentDate.Value),
Amount = product.Sum(x => x.Amount),
Month = product.FirstOrDefault().PaymentDate.Value.Month
});
Таким образом, только для возвращаемых месяцев, если не все 4 недели (значения с 1,2,3,4), давайте найдем, какие из них отсутствуют, и добавим что-то подобное.
Любой видпомощи было бы здорово
Спасибо