'How to GroupBy week in Entity Framework in PostgreSQL
I have a table which has column DateTime. And I want to group this by week. There are no problem to group by date or by month. But how to group by week?
I need to get something like this. And in should work with IQueryable.
var peoplePerWeeks = await context.People
.GroupBy(x => x.Date.StartOfWeek)
.Select(x => new { Date = x.key, Number = x.Count()})
.ToListAsync();
Solution 1:[1]
tried anything like? (this is just my example data, no postgres or entity framework, see last note, but you want to group on week start )
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();
the part that does what you mention, I think, is
people.GroupBy(x => {
var td = x.Date;
while (td.DayOfWeek != System.DayOfWeek.Monday) td = td.AddDays(-1);
return td;
})
with your start day of week in there as appropriate to you
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |