1

我的 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实际上做什么?
4

1 回答 1

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

而且我认为您需要按照蒂姆的评论中所述进行操作:

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

但在这种情况下,我会通过在您的函数之前声明的基本费率来更改“hazmatRate”。否则,您将使用它所包含的价值来增加您的价值,然后使其呈指数增长

于 2013-02-07T09:30:16.113 回答