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

如何使用C# EF和Linq查询订单最多的用户(含用户数据)

查询拥有最多订单的用户解决方案

需求

查询出拥有最多订单的用户,并返回该用户的完整数据。

参考示例(原销量最高商品查询代码翻译)

原代码的中文注释版本:

// 按商品分组,计算每个商品的总销量
var productsGroup = orders.GroupBy(x => x.Product)
                .ToDictionary(x => x.Key, y => y.Select(z => z.Count).Sum());

// 获取销量最高的商品
var mostSoldProduct = productsGroup.MaxBy(kvp => kvp.Value).Key;

实现代码

参照上面的思路,我们可以通过按用户分组统计订单数来实现需求:

基础实现(单个用户)

// 按用户分组,统计每个用户的订单数量
var userOrderCounts = orders.GroupBy(order => order.User)
                           .ToDictionary(group => group.Key, group => group.Count());

// 获取订单数量最多的用户
var topUser = userOrderCounts.MaxBy(kvp => kvp.Value).Key;

处理多个用户并列最多的情况

如果存在多个用户订单数相同且都是最大值的情况,可以这样获取所有符合条件的用户:

var maxOrderCount = userOrderCounts.Max(kvp => kvp.Value);
var topUsers = userOrderCounts.Where(kvp => kvp.Value == maxOrderCount)
                             .Select(kvp => kvp.Key)
                             .ToList();

注意事项

  • 假设你的Order实体中包含User导航属性,能够直接关联到用户的完整数据
  • 如果是通过数据库直接查询(比如EF Core),也可以用LINQ to Entities写法,让数据库层面完成统计,提升性能:
var topUser = orders.GroupBy(o => o.UserId)
                   .Select(g => new { UserId = g.Key, OrderCount = g.Count() })
                   .OrderByDescending(x => x.OrderCount)
                   .FirstOrDefault()
                   ?.User; // 这里需要通过UserId关联查询用户数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:15:39