1

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

2015

二月

第一条标题

第二条标题

一月

第三条标题


2014

十二月

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

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

4

2 回答 2

5

假设您有一个Article具有YearMonth属性的类,这将执行以下操作:

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

将月份分组转换为匿名类型当然不是必需的,但可以更清楚地了解您在结果中实际得到的内容。

于 2015-02-06T20:24:20.957 回答
1

序列中的每个项目都是一个组,要将序列中的每个项目转换为其他内容,请使用Select. 在其中,Select您需要将每个组转换为一系列组。要将一个组实际转换为一组组,请使用GroupBy.

于 2015-02-06T20:20:49.513 回答