具有空对象和 属性 的 Linq Max
Linq Max with null object and property
我有航班对象list.In这个列表每个航班对象都有段对象list.Every这个段对象列表中的项目有FareDisplayInfos对象list.EveryFareDisplayInfos对象有属性这样的作为总票价
我想得到 Max totalFare.So 我是这样编码的。
Model.Flights.Max(a => a.FlightSegments.FirstOrDefault().FareDisplayInfos.Max(c => c.TotalFare));
但它给出零,因为有些 totalFare 为空,有些值为零。
如何消除空对象或零对象
Note:Not 只有 TotalFare 为零或 null.Somet 次 FareDisplayInfos 等对象为空
已编辑
在 tim-schmelter 的帮助下,我对此进行了编码,但它将最大值设置为 0(零)
尽管此 (LeaveRouteListAcer) 中有 43 个项目并且此项目具有 FlightSegments 该段具有许多 FareDisplayInfos 并且 FareDisplayInfos 具有总票价(有些票价是 0 有些是 90....)
var maxTotalFare = hModel.LeaveList
.SelectMany(f => f.FlightSegments
.Where(fs => fs != null && fs.FareDisplayInfos != null)
.Select(fs => fs.FareDisplayInfos.Max(fdi => fdi.TotalFare))
.DefaultIfEmpty(0))
.Max();
用三元运算符这样检查就可以了
Model.Flights.Max(a => a.FlightSegments == null
? 0
: a.FlightSegments.FirstOrDefault().FareDisplayInfos == null
? 0
: a.FlightSegments.FirstOrDefault().FareDisplayInfos.Max(c => c.TotalFare == null ? 0 : c.TotalFare)
);
假设 TotalFare
可以为空:
var maxTotalFare = Model.Flights
.SelectMany(f => f.FlightSegments
.Where(fs => fs != null && fs.FareDisplayInfos != null)
.Select(fs => fs.FareDisplayInfos.Max(fdi => fdi.TotalFare ?? 0))
.DefaultIfEmpty(0))
.Max();
我有航班对象list.In这个列表每个航班对象都有段对象list.Every这个段对象列表中的项目有FareDisplayInfos对象list.EveryFareDisplayInfos对象有属性这样的作为总票价
我想得到 Max totalFare.So 我是这样编码的。
Model.Flights.Max(a => a.FlightSegments.FirstOrDefault().FareDisplayInfos.Max(c => c.TotalFare));
但它给出零,因为有些 totalFare 为空,有些值为零。 如何消除空对象或零对象 Note:Not 只有 TotalFare 为零或 null.Somet 次 FareDisplayInfos 等对象为空
已编辑
在 tim-schmelter 的帮助下,我对此进行了编码,但它将最大值设置为 0(零) 尽管此 (LeaveRouteListAcer) 中有 43 个项目并且此项目具有 FlightSegments 该段具有许多 FareDisplayInfos 并且 FareDisplayInfos 具有总票价(有些票价是 0 有些是 90....)
var maxTotalFare = hModel.LeaveList
.SelectMany(f => f.FlightSegments
.Where(fs => fs != null && fs.FareDisplayInfos != null)
.Select(fs => fs.FareDisplayInfos.Max(fdi => fdi.TotalFare))
.DefaultIfEmpty(0))
.Max();
用三元运算符这样检查就可以了
Model.Flights.Max(a => a.FlightSegments == null
? 0
: a.FlightSegments.FirstOrDefault().FareDisplayInfos == null
? 0
: a.FlightSegments.FirstOrDefault().FareDisplayInfos.Max(c => c.TotalFare == null ? 0 : c.TotalFare)
);
假设 TotalFare
可以为空:
var maxTotalFare = Model.Flights
.SelectMany(f => f.FlightSegments
.Where(fs => fs != null && fs.FareDisplayInfos != null)
.Select(fs => fs.FareDisplayInfos.Max(fdi => fdi.TotalFare ?? 0))
.DefaultIfEmpty(0))
.Max();