我需要一个分组列表的分组列表;我有一堆文章,我需要按年分组,并在每年内逐月分组。它将在页面上看起来像这样:
第1条标题
第2条标题
第3条标题
第4条标题
我知道如何获得一个分组列表,例如
var yearList = articles.GroupBy(x => x.Year);
但是如何对分组列表列表进行分组?
这是我的文章课程:
public class Article
{
public String Title { get; set; }
public String DateDisplay { get; set; }
public String MoreLink { get; set; }
public int Month { get; set; }
public int Year { get; set; }
}
我希望按年份分组列表,其中包含按月分组的列表
答案 0 :(得分:5)
假设您拥有Article
类Year
和Month
属性,我们会这样做:
var perYearAndPerMonth = articles.GroupBy(a => a.Year)
.Select(yearGroup => new
{
Year = yearGroup.Key,
PerMonth = yearGroup.GroupBy(a => a.Month)
.Select(monthGroup => new
{
Month = monthGroup.Key,
Articles = monthGroup.ToList()
})
});
将月份分组转换为匿名类型当然不是必需的,但可以更清楚地了解您实际获得的结果。
答案 1 :(得分:1)
序列中的每个项目都是一个组,要将序列中的每个项目转换为其他项目,请使用Select
。在Select
范围内,您需要将每个组转换为一系列组。要将一个组实际转换为一组组,请使用GroupBy
。