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

.NET7下LINQ按RegistrationNumber去重后按DriverToLoad排序失效问题求助

问题原因

你当前的OrderBy(m => m.DriverToLoad)仅作用于单个分组内部,目的是从每个RegistrationNumber分组中选出DriverToLoad最小的那条数据。但GroupBy操作返回的分组集合默认会按分组键(也就是RegistrationNumber)排序,因此最终查询结果会继承这个分组顺序,而非你期望的整体按DriverToLoad排序。

解决方法

在筛选出每个分组的目标数据后,对整个结果集再执行一次OrderBy,指定按DriverToLoad排序即可:

Drive = await _db.Drive
    .Where(m => m.StatusId is 5 or 1010 or 1012)
    .Include(s => s.DriveStatus)
    .Include(d => d.Location)
    .Include(f => f.Item)
    .GroupBy(m => m.RegistrationNumber)
    .Select(g => g.OrderBy(m => m.DriverToLoad).First())
    .OrderBy(m => m.DriverToLoad) // 新增这一行,对整体结果排序
    .ToListAsync(),

额外说明:.NET7支持is模式匹配简化条件判断,上述代码用is替代了原有的==写法,你也可以保留原判断逻辑,不影响功能。

内容的提问来源于stack exchange,提问作者René Wester

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:35:30