У меня есть таблица со столбцом DateTime. И я хочу сгруппировать это по неделям. Нет проблем с группировкой по дате или по месяцу. Но как сгруппировать по неделям?
Мне нужно получить что-то вроде этого. А в контроле должно работать с IQueryable.
var peoplePerWeeks = await context.People
.GroupBy(x => x.Date.StartOfWeek)
.Select(x => new { Date = x.key, Number = x.Count()})
.ToListAsync();
Решение проблемы
пробовал что-нибудь вроде? (это просто мой пример данных, без postgres или фреймворка сущностей, см. последнее примечание, но вы хотите сгруппировать по началу недели)
var people = new List<(DateTime Date, string fullName)> {
( new DateTime(2022, 3, 1), "fred"),
( new DateTime(2022, 3, 2), "b"),
( new DateTime(2022, 3, 3), "c"),
( new DateTime(2022, 3, 4), "d"),
( new DateTime(2022, 3, 5), "e"),
( new DateTime(2022, 3, 9), "f")
};
var groupWeek = people.GroupBy(x => {
var td = x.Date;
while (td.DayOfWeek!= System.DayOfWeek.Monday) td = td.AddDays(-1);
return td;
}).Select(x => new { WeekStart = x.Key, Count = x.Count(), dataList = x.ToList() });
var myList = groupWeek.ToList();
часть, которая делает то, что вы упоминаете, я думаю,
people.GroupBy(x => {
var td = x.Date;
while (td.DayOfWeek!= System.DayOfWeek.Monday) td = td.AddDays(-1);
return td;
})
с днем начала недели там, где вам удобно
Комментариев нет:
Отправить комментарий