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

如何用LINQ查询获取乘客数量最多的Flight对象?

获取乘客数量最多的Flight对象解决方案

基础实现(.NET 6+)

直接使用MaxBy方法,结合Sum统计每个航班的总乘客数:

var mostPassengersFlight = _flights.MaxBy(flight => 
    flight.Bookings.Sum(booking => booking.Passengers.Count())
);
  • 逻辑说明:遍历每个航班,通过Sum累加该航班下所有预订的乘客数量,再用MaxBy直接筛选出乘客总数最多的航班对象。

.NET 6之前版本兼容实现

如果项目使用的是.NET 6以下版本(无MaxBy方法),可以通过投影+排序实现:

var mostPassengersFlight = _flights
    .Select(flight => new 
    { 
        Flight = flight, 
        TotalPassengers = flight.Bookings.Sum(booking => booking.Passengers.Count()) 
    })
    .OrderByDescending(item => item.TotalPassengers)
    .FirstOrDefault()?.Flight;
  • 逻辑说明:先将航班和对应的总乘客数投影为匿名类型,按乘客数降序排序后取第一个,再获取对应的航班对象。

处理并列最多的情况

如果需要获取所有乘客数量并列最多的航班:

// 先计算所有航班的乘客数并缓存
var flightPassengerCounts = _flights
    .Select(f => new 
    { 
        Flight = f, 
        TotalPassengers = f.Bookings.Sum(b => b.Passengers.Count()) 
    })
    .ToList();

if (!flightPassengerCounts.Any())
{
    // 处理_flights为空集合的场景,比如返回空列表或抛出提示
    return new List<Flight>();
}

// 获取最大乘客数
var maxPassengerCount = flightPassengerCounts.Max(x => x.TotalPassengers);
// 筛选出所有达到最大乘客数的航班
var topFlights = flightPassengerCounts
    .Where(x => x.TotalPassengers == maxPassengerCount)
    .Select(x => x.Flight)
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:55:25