使用LINQ进行自动转换

本文关键字:转换 LINQ 使用 | 更新日期: 2023-09-27 17:58:12

My VS2010使用ReSharper,提示将foreach转换为LINQ。它从转换

foreach (var item in quotePrice.ExtraServiceBreakdown)
{
    hazmatRate = (quoteRequest.IsHazMat && item.Id == VitranHazmatCode) ?   
                                                 item.Cost : hazmatRate;
}

hazmatRate = quotePrice.ExtraServiceBreakdown.Aggregate(
                 hazmatRate, (current, item) => 
                     (quoteRequest.IsHazMat && item.Id == VitranHazmatCode) ? 
                         item.Cost : current);

,我有两个问题

  1. current是什么意思?这是否指向变量hazmatRate
  2. Aggregate实际上做什么

使用LINQ进行自动转换

  1. 当前确实指向您的危险品
  2. LINQ聚合算法解释

我认为你需要按照蒂姆的评论所说的去做:

    hazmatRate += (quoteRequest.IsHazMat && item.Id == VitranHazmatCode) ?   item.Cost : hazmatRate;

但在这种情况下,我会用函数前声明的基本速率来更改"hazmatRate"。否则,在使其呈指数级增长之前,您将使用它所包含的值来增加您的值。