使用LINQ自动转换

时间:2013-02-07 09:24:53

标签: c# linq

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

1 个答案:

答案 0 :(得分:1)

  1. 目前确实指向你的Hazmat
  2. LINQ Aggregate algorithm explained
  3. 而且我认为你需要像蒂姆的评论中所说的那样做:

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

    但是在这种情况下,我会改变“危险品”'按功能前声明的基本费率。否则,在使指数增长之前,您将使用其包含的值增加您的值