linq - 按最大值分组

标签 linq

我想按类别分组,显示其名称,然后显示与其相关的最高 ID。这是我想要的一些数据和结果。有任何想法吗?我一直在尝试 GroupJoin,但似乎无法让它发挥作用。

我的数据

var stuff = new[] {
    new {id = 5, catId = 2},
    new {id = 56, catId = 2},
    new {id = 56, catId = 2},
    new {id = 8, catId = 1},
    new {id = 9, catId = 3}};

var categories = new[] {
    new {catId = 1, Name = "Water"},
    new {catId = 4, Name = "Wind"},
    new {catId = 2, Name = "Fire"}};

我希望我的结果是什么样的

Water - 8
Wind - null
Fire - 56

最佳答案

categories
    .GroupJoin
    (
        stuff,
        c=>c.catId,
        s=>s.catId,
        (c,s)=>new 
        {
            c.Name,
            Max = s.Any() ? (int?)s.Max (m => m.id) : null
        } 
    );

关于linq - 按最大值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24992659/

相关文章:

c# - 选择通过与其分组的另一个属性值找到的 XML 属性值。

c# - 计算行尾的出现次数

c# - 动态 LINQ 到数据表 : why using hardcode string "it" as DataRow

c# - 算法挑战 : merging date range

database - 使用 LINQ to Entities 选择连续条目

c# - 向数组添加元素

c# - 具有匿名类型的 linq 表达式中的 TryGetValue()

c# - Queryable.Aggregate 不适用于空值

c# - 集合上的 LINQ where 和 where 方法之间的区别

linq group by with count