我正在尝试查询 IEnumerable<Object>
按周分组,例如:
Project(Name, DateStart,ID)
我有 IEnumerable<Project>
我想做一份报告,按周分组。
例如:
Week 1
Project1 8/4/2013 ID1
Project2 9/4/2013 ID2
Week 2
Project1 16/4/2013 ID3
Project2 18/4/2013 ID5
Week 3
Project1 24/4/2013 ID7
Project2 26/4/2013 ID8
如果有人可以帮助我,我真的很感激!我试图做一个 lambda 表达式,但没有成功。
谢谢!
最佳答案
var weekGroups = projects
.Select(p => new
{
Project = p,
Year = p.DateStart.Year,
Week = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear
(p.DateStart, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)
})
.GroupBy(x => new { x.Year, x.Week })
.Select((g, i) => new
{
WeekGroup = g,
WeekNum = i + 1,
Year = g.Key.Year,
CalendarWeek = g.Key.Week
});
foreach (var projGroup in weekGroups)
{
Console.WriteLine("Week " + projGroup.WeekNum);
foreach(var proj in projGroup.WeekGroup)
Console.WriteLine("{0} {1} {2}",
proj.Project.Name,
proj.Project.DateStart.ToString("d"),
proj.Project.ID);
}
关于C# Linq 或 Lambda 表达式 Group by Week IEnumerable list with date field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15927573/