c# - 使用 LinQ 的嵌套 IGrouping

标签 c# linq igrouping

我想知道是否有可能获得 List<IGrouping<string, IGrouping<string, T>>>出于 Linq 表达式。我想做的是按流派和艺术家对歌曲进行排序,但采用一种我可以遍历每种流派和每种流派的格式,针对每张专辑进行迭代。如果可能的话怎么办?或者是否有更好的方法来实现我想要实现的目标?

这是我的歌曲类

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>>但我想要的是进一步按艺术家分组。

最佳答案

我想要的是 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 方法语法)。

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

关于c# - 使用 LinQ 的嵌套 IGrouping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747787/

相关文章:

c# - 有没有办法在构造函数中强制显式参数类型?

c# - 使用具有复杂过滤器语法的外部 API

c# - 如何统计我的列的总数?

c# - 生成具有方法类型的类的方法列表

c# - 如何从 IGrouping 中获取值

c# - 从 linq 查询填充数据表

c# - 检查 List<List<string>> 是否包含字符串

c# - 解析 ExpressionTree 的开销大吗?

c# - 检测 IEnumerable<T> 是否已分组,我在检查类型时得到了一些疯狂的结果