LINQのAggregateについて
使い方が初見ではいまいち不明なAggregateの使い方について
雑なイメージはreduce関数
[1,2,3,4]を1234とかに変換するときに使える。
こんな感じで
Enumerable.Range(1, 4).Aggregate(0, (a, b) => 10* a + b)
今回の例だと
Convert.ToInt32(string.Join("", Enumerable.Range(1, 4)))
の方が二桁の数値にも対応できて楽
Aggregateで全部に対応するにはbの桁次第でaにかける数を変える必要がある。
1桁⇒10
2桁⇒100
といった感じにするためにPowとLog10を組み合わせる必要がある。
↓な感じに
Enumerable.Range(5, 4).Aggregate(0, (a, b) => Convert.ToInt32(Math.Pow(10, (int)(Math.Log10(b))+1) * a + b))