You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ让同名记录忽略quantity排序并归为一组?

完全可以用LINQ实现这个需求

你要的效果核心是:把同first_name的记录凑在一起,整体排序时按该名字对应记录里的最大quantity降序,组内的记录可以按需排序,用LINQ的分组+排序就能搞定。

代码示例

假设你的数据实体类是Employee(包含employee_id、first_name这些属性),直接写这段代码就行:

var sortedEmployees = employees
    // 先按first_name把同名字的归为一组
    .GroupBy(emp => emp.first_name)
    // 对分组排序:按每组里最大的quantity从高到低排
    .OrderByDescending(group => group.Max(emp => emp.quantity))
    // 把每个分组拆开来,组内按quantity降序排(和你要的结果匹配)
    .SelectMany(group => group.OrderByDescending(emp => emp.quantity))
    .ToList();

代码说明

  1. GroupBy(emp => emp.first_name):这一步直接把所有John的记录、Michael的记录分别归成两组,保证同名字的不会被拆开。
  2. OrderByDescending(group => group.Max(emp => emp.quantity)):因为John组里最大的quantity是250,比Michael组的200大,所以John组会排在前面,符合你要的整体顺序。
  3. SelectMany(...):把分组拆成单条记录,同时组内按quantity降序排,这样John组里quantity高的2号员工会排在1号前面,和你期望的结果完全一致。如果组内不想按quantity排,换成OrderBy(emp => emp.employee_id)或者OrderBy(emp => emp.last_name)也可以。

最终结果

运行后得到的结果就是你想要的:

employee_idfirst_namelast_nameemaildepartmentquantity
2JohnJohnsonemily@example.comHR250
1JohnSmithjohn@example.comIT150
3MichaelDavismichael@example.comSales200

内容的提问来源于stack exchange,提问作者wittream

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:35:35