C# 配列またはリストの集計を行う

  • 作成日 2021.12.26
  • 更新日 2022.03.03
  • C#
C# 配列またはリストの集計を行う

C#で、配列またはリストの集計を行うサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Microsoft Visual Studio Community 2019 Version 16.7.1

集計を行う

集計を行うするには、Linqの「Aggregate」を使用することで可能です。

以下は、配列を集計して、結果を表示するだけのコードとなります。

using System;
using System.Collections.Generic;
using System.Linq;

namespace testapp
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr1 = new int[] { 1, 2, 3, 4, 5};
            int?[] arr2 = new int?[] { 1, 2, 3, 4, 5, null };

            List<string> list = new List<string> { "java", "react", "vue", "javascript" };

            try
            {
                // 合計値を集計 15
                int reault1 = arr1.Aggregate((sum, number) => sum += number);

                // nullがあると正しく動作しない
                int? reault2 = arr2.Aggregate((sum, number) => sum += number);

                // 最大文字数の単語を抽出 javascript
                string reault3 = list.Aggregate((str, next) => next.Length > str.Length ? next : str);

                Console.WriteLine($"実行結果は{reault1}です"); // 15

                Console.WriteLine($"実行結果は{reault2}です"); // 

                Console.WriteLine($"実行結果は{reault3}です"); // javascript

            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.ToString());             
            }
        }
    }
}

実行結果

以下のように、初期値を設定することも可能です。

using System;
using System.Collections.Generic;
using System.Linq;

namespace testapp
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr1 = new int[] { 1, 2, 3, 4, 5};            

            List<string> list = new List<string> { "java", "react", "vue", "javascript" };

            try
            {
                // 初期値と合計値を集計
                int reault1 = arr1.Aggregate(15,(sum, number) => sum += number);
                
                // 初期値を含め最大文字数の単語を抽出
                string reault2 = list.Aggregate("aspnetcore",(str, next) => next.Length > str.Length ? next : str);

                Console.WriteLine($"実行結果は{reault1}です"); // 30

                Console.WriteLine($"実行結果は{reault2}です"); // aspnetcore              

            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.ToString());             
            }
        }
    }
}

実行結果