1

LINQへの変換を促す ReSharper を使用する私の VS2010 foreach。から変換します。

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);

ここで 2 つの質問があります。

  1. とはどういうcurrent意味ですか? それは変数を指していますhazmatRateか?
  2. Aggregate実際には何をしますか?
4

1 に答える 1

1
  1. 現在、実際にあなたの危険物を指しています
  2. LINQ Aggregate アルゴリズムの説明

そして、ティムのコメントに記載されているようにする必要があると思います:

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

ただし、この場合、関数の前に宣言された基本レートで「hazmatRate」を変更します。そうしないと、指数関数的に成長させる前に、含まれている値で値を増やすことになります

于 2013-02-07T09:30:16.113 に答える