我有航班对象列表。在此列表中,每个航班对象都有分段对象列表。此分段对象列表中的每个项目都有FareDisplayInfos对象列表。每个FareDisplayInfos对象都具有诸如totalFare
之类的属性我想获得Max totalFare。所以我这样编码。
Model.Flights.Max(a => a.FlightSegments.FirstOrDefault().FareDisplayInfos.Max(c => c.TotalFare));
但它给出零,因为有些totalFare为null且某些值为零。 如何消除null或零对象 注意:不仅TotalFare为零或null.Sayt次对象(如FareDisplayInfos)为空
被修改
使用tim-schmelter帮助我编码,但它将max设置为0(零) 虽然这个项目中有43项(LeaveRouteListAcer),但这个项目有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();
答案 0 :(得分:0)
用三元运算符来区分它。
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)
);
答案 1 :(得分:0)
这应该有用,假设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();