获得最大值 对象列表中的值

pal*_*hta 4 c# linq

我有以下课程.

public class PriceDetails 
{
  public float AverageNightlyRate { get; set; }
}

public class RoomContainer
{
  public PriceDetails RoomPriceDetails { get; set; }
  public string PromotionDescription { get; set; }
}    

public List<RoomContainer> HotelRooms { get; set; }
Run Code Online (Sandbox Code Playgroud)

列表HotelRooms有10件物品.我想找到AverageNightlyRate的最大值 .

我正在使用for循环来迭代.我能以有效的方式做到吗?

Ser*_*kiy 15

使用Enumerable.Max:

var maxAverageRate = HotelRooms.Max(r => r.RoomPriceDetails.AverageNightlyRate)
Run Code Online (Sandbox Code Playgroud)

如果RoomPriceDetails可能的话null,那么:

var maxAverageRate = HotelRooms.Where(r => r.RoomPriceDetails != null)
                               .Max(r => r.RoomPriceDetails.AverageNightlyRate);
Run Code Online (Sandbox Code Playgroud)

要么

var maxAverageRate = HotelRooms.Select(room => room.RoomPriceDetails)
                               .Where(price => price != null)
                               .Max(price => price.AverageNightlyRate);
Run Code Online (Sandbox Code Playgroud)

  • @palakmehta那是因为你已经编辑了问题.无论如何,请参阅更新的答案 (2认同)