我需要一个分组列表的分组列表;我有一堆文章,我需要按年份分组,每年按月份分组。它在页面上看起来像这样:
2015年
二月
第1条标题
第2条标题
一月
第3条标题
2014年
12月
第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; }
}
我想要一个按年份分组的列表,其中包含按月份分组的列表
假设您有一个具有Year
和Month
属性的Article
类,这将实现:
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()
})
});
当然,将月份分组转换为匿名类型是不必要的,但可以更清楚地了解结果。
序列中的每个项目都是一个组,要将序列中的每一个项目转换为其他项目,请使用Select
。在Select
中,您需要将每个组转换为一个组序列。要将一个组实际转换为一系列组,请使用GroupBy
。