なんとなく

なんとなく書きます

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