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);
,我有两个问题
current
是什么意思?这是否指向变量hazmatRate
Aggregate
实际上做什么
- 当前确实指向您的危险品
- LINQ聚合算法解释
我认为你需要按照蒂姆的评论所说的去做:
hazmatRate += (quoteRequest.IsHazMat && item.Id == VitranHazmatCode) ? item.Cost : hazmatRate;
但在这种情况下,我会用函数前声明的基本速率来更改"hazmatRate"。否则,在使其呈指数级增长之前,您将使用它所包含的值来增加您的值。