如何对分组列表的列表进行分组?
How to group a list of grouped lists?
我需要一个分组列表的分组列表;我有一堆文章需要按年分组,并在每年内按月分组。它在页面上看起来像这样:
2015
二月
第 1 条标题
第 2 条标题
1 月
第 3 条标题
2014
十二月
第 4 条标题
我知道如何得到一个分组列表,比如
var yearList = articles.GroupBy(x => x.Year);
但是我怎样才能对一组列表进行分组呢?
这是我的文章class:
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; }
}
我想要一个按年分组的列表,其中包含按月分组的列表
序列中的每个项目都是一个组,要将序列中的每个项目转换为其他项目,请使用 Select
。在 Select
中,您需要将每个组转换为一系列组。要实际将一组转换为一组序列,请使用 GroupBy
.
假设您有一个具有 Year
和 Month
属性的 Article
class,这将执行:
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
二月
第 1 条标题
第 2 条标题
1 月
第 3 条标题
2014
十二月
第 4 条标题
我知道如何得到一个分组列表,比如
var yearList = articles.GroupBy(x => x.Year);
但是我怎样才能对一组列表进行分组呢?
这是我的文章class:
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; }
}
我想要一个按年分组的列表,其中包含按月分组的列表
序列中的每个项目都是一个组,要将序列中的每个项目转换为其他项目,请使用 Select
。在 Select
中,您需要将每个组转换为一系列组。要实际将一组转换为一组序列,请使用 GroupBy
.
假设您有一个具有 Year
和 Month
属性的 Article
class,这将执行:
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()
})
});
将月份分组转换为匿名类型当然不是必需的,但可以更清楚地了解您在结果中实际得到的内容。