我想知道是否有可能从Linq表达式中获取List<IGrouping<string, IGrouping<string, T>>>。我想做的是按流派和艺术家来订购歌曲,但格式要使我可以遍历每种流派,对于每种流派,都可以对每张专辑进行遍历。如果有可能怎么做?还是有一种更好的方法来实现我想要的目标?

这是我的歌课

public class Song
{
    [StringLength(100)]
    public string Album { get; set; }

    public int Id { get; set; }

    [StringLength(100)]
    public string Title { get; set; }

    [StringLength(100)]
    public string Genre { get; set; }

    [StringLength(255)]
    public string Comment { get; set; }

    [StringLength(4)]
    public string Year { get; set; }

    [StringLength(100)]
    public string Author { get; set; }

    public int Length { get; set; }

    [StringLength(255)]
    public string Photo { get; set; }

    [StringLength(255)]
    public string FileName { get; set; }

    public string Extension { get; set; }
}


我在这里有这个查询

var songs = db.Songs.GroupBy(s => s.Genre).ToList();


给我一个List<IGrouping<string, Song>>,但是我想要按Artist进一步分组。

最佳答案

我想要的是一个List<IGrouping<string, IGrouping<string, Song>>>,这段代码为我提供了我想要的

            var queryNestedGroups =
            (from song in db.Songs
            group song by song.Genre into newGroup1
            from newGroup2 in
                (from song in newGroup1
                 group song by song.Author)
            group newGroup2 by newGroup1.Key).ToList();


(尽管我不太确定如何将其转换为linq方法语法)。

感谢所有发表评论和/或回答的人。

10-06 14:45