C# 如何对分组列表列表进行分组?
我需要一个分组列表的分组列表;我有一大堆文章,我需要每年分组,并且在每年内按月分组。页面上将显示如下内容: 2015 二月 第1条标题 第2条标题 一月 第3条标题 2014 十二月 第4条标题 我知道如何获得一个分组列表,例如C# 如何对分组列表列表进行分组?,c#,list,linq,linq-group,C#,List,Linq,Linq Group,我需要一个分组列表的分组列表;我有一大堆文章,我需要每年分组,并且在每年内按月分组。页面上将显示如下内容: 2015 二月 第1条标题 第2条标题 一月 第3条标题 2014 十二月 第4条标题 我知道如何获得一个分组列表,例如 var yearList = articles.GroupBy(x => x.Year); 但是我如何将一组列表分组呢 这是我的文章课: public class Article { public String Title { get; set; }
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; }
}
我想要一个按年分组的列表,其中包含按月分组的列表,序列中的每个项目都是一个组,若要将序列中的每个项目转换为其他项目,请使用“选择”。在该选择中,您需要将每个组转换为一系列组。要将一个组转换为一组序列,请使用GroupBy。序列中的每个项目都是一个组,要将序列中的每个项目转换为其他项目,请使用Select。在该选择中,您需要将每个组转换为一系列组。要将一个组实际转换为一系列组,请使用GroupBy。假设您有一个具有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()
})
});
当然,没有必要将月份分组转换为匿名类型,但这样可以更清楚地了解结果中的实际内容。如果您有一个具有年和月属性的文章类,则可以:
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()
})
});
将月份分组转换为匿名类型当然没有必要,但可以更清楚地显示结果中的实际内容。您可以发布相关的类吗?编辑后的类中包含我的文章classvar yearList=articles.GroupByx=>new{x.Year,x.month}.GroupByx=>x.FirstOrDefault?.Year@巴特,这将按月分组,按月分组,而不是反过来。@巴特和我上次检查的时候,C6.0还没有出来。你能发布相关的类吗?编辑成包括我的文章classvar yearList=articles.GroupByx=>new{x.year,x.month}.GroupByx=>x.FirstOrDefault?.year@巴特,这将按月分组,每年按月分组,而不是反过来。@巴特和我上次检查时,C 6.0还没有出来。我知道我需要使用GroupBy。但我不知道如何在分组列表中使用GroupBy。@user3784238,我已经告诉过你具体的方法;您可以对当前拥有的内容调用Select。由于GroupBy的返回类型IGroupping再次实现IEnumerable use GroupBy。我知道我需要使用GroupBy。但我不知道如何在分组列表中使用GroupBy。@user3784238,我已经告诉过你具体的方法;您可以对当前拥有的内容调用Select。因为GroupBy的返回类型igroupping再次实现了IEnumerable use GroupBy。