我试图IEnumerable<Object>按周分组查询,例如:
Project(Name, DateStart,ID)
Run Code Online (Sandbox Code Playgroud)
我有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
Run Code Online (Sandbox Code Playgroud)
如果有人能帮我一把,我真的很感激!我试图做一个lambda表达但没有成功.
谢谢!
Tim*_*ter 13
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);
}
Run Code Online (Sandbox Code Playgroud)