1

グループ化されたリストのグループ化されたリストが必要です。年ごとにグループ化し、各年の月ごとにグループ化する必要がある記事がたくさんあります。ページ上では次のようになります。

2015年

2月

第1条 タイトル

第2条 タイトル

1月

第3条 タイトル


2014年

12月

第4条 タイトル


次のように、グループ化されたリストを 1 つ取得する方法を知っています。

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クラスがあるYearと仮定すると、次のMonthようになります。

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各グループを一連のグループに変換する必要があります。1 つのグループを一連のグループに実際に変換するには、 を使用しますGroupBy

于 2015-02-06T20:20:49.513 に答える