带计数的嵌套排序组

本文关键字:排序 嵌套 | 更新日期: 2024-10-19 14:55:17

我正试图弄清楚如何获取一个列表,并获得一个分组列表,每个列表都包含总金额的分组。我完成了第一个goup,并四处查看了使用LINQ进行嵌套组的情况,但不确定如何使用我需要的信息。Bellow是一个样本列表和我目前拥有的编码。

样品清单

var list = new[] {
    new { Product = "Product1", Category = "Category1", Issue = "Issue1" },
    new { Product = "Product1", Category = "Category1", Issue = "Issue2" },
    new { Product = "Product2", Category = "Category2", Issue = "Issue1" },
    new { Product = "Product3", Category = "Category1", Issue = "Issue2" },
    new { Product = "Product2", Category = "Category2", Issue = "Issue1" },
    new { Product = "Product1", Category = "Category1", Issue = "Issue" },
}.ToList()

样本代码

var topIssues = from issue in storage.Issues
                group issue by new {issue.Category, issue.Issue} into issueGroup
                let count = issueGroup.Count()
                orderby count descending
                select new { Issue = issueGroup.Key, Count = count};

我正在做一个由Category和Issue定义的组,然后我需要每个组中的项目数,以及按降序排列的列表。但是,我希望在这些产品中有一个包含的组。该组还包含每个产品的项目计数,也按降序排列。如有任何帮助,我们将不胜感激。

带计数的嵌套排序组

var topIssues = (from issue in list
                group issue by new {issue.Category, issue.Issue}
                into issueGroup
                select new
                {
                    Issue = issueGroup.Key, 
                    Count = issueGroup.Count(),
                    GP = (from i in issueGroup group i by i.Product into gp select new
                    {
                        Product = gp.Key, Count = gp.Count()
                    }).OrderByDescending(g=>g.Count)
                }).OrderByDescending(d=>d.Count);