今回は、Sum拡張メソッドについてです。
Sum拡張メソッドは、文字通り合計を返します。
Sum拡張メソッドには、非常に多くのオーバーロードが存在します。
ここでは、int32の分のみ記述します。
(decimal, int, long, single毎に引数無しと引数有りのパターンと、左記の型のNullable型の分)
public static int Sum( this IEnumerable<int> source ) public static int Sum<TSource>( this IEnumerable<TSource> source, Func<TSource, int> selector )
一つ目の書式が一番よく利用される形のものですね。
2つめの書式は、selectorが追加されています。
このオーバーロードを利用すると、特定のデータのみの合計を取得する事が出来ます。
以下、サンプルです。
#region LinqSample-33 public class LinqSamples33 : IExecutable { public void Execute() { var numbers = new int[] { 1, 2, 3, 4, 5 }; // // Sum拡張メソッドは、文字通り合計を求める拡張メソッド。 // // Sum拡張メソッドには、各基本型のオーバーロードが用意されており // (decimal, double, int, long, single及びそれぞれのNullable型) // それぞれに、引数無しとselectorを指定するバージョンのメソッドがある。 // // // 引数無しのSum拡張メソッドの使用. // Console.WriteLine("引数無し = {0}", numbers.Sum()); // // selectorを指定するSum拡張メソッドの使用. // Console.WriteLine("引数有り = {0}", numbers.Sum(item => (item % 2 == 0) ? item : 0)); } } #endregion
実行結果は以下の通りです。
引数無し = 15 引数有り = 6
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ