Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对分组列表列表进行分组?_C#_List_Linq_Linq Group - Fatal编程技术网

C# 如何对分组列表列表进行分组?

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

我需要一个分组列表的分组列表;我有一大堆文章,我需要每年分组,并且在每年内按月分组。页面上将显示如下内容:

2015 二月 第1条标题

第2条标题

一月 第3条标题

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

我想要一个按年分组的列表,其中包含按月分组的列表,序列中的每个项目都是一个组,若要将序列中的每个项目转换为其他项目,请使用“选择”。在该选择中,您需要将每个组转换为一系列组。要将一个组转换为一组序列,请使用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。