如何对已分组列表的列表进行分组



我需要一个分组列表的分组列表;我有一堆文章,我需要按年份分组,每年按月份分组。它在页面上看起来像这样:

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; }
}

我想要一个按年份分组的列表,其中包含按月份分组的列表

假设您有一个具有YearMonth属性的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

相关内容

  • 没有找到相关文章

最新更新