Fun Coding

学んだことを記録していきます!

【C#】リストの唯一の要素を取得する方法(SingleOrDefault)

リストの唯一の要素を取得する方法の1つに「SingleOrDefault」メソッドがあります。
LINQを使った方法になります。
サンプルコードを交えて解説したいと思います。

説明

リストから唯一の要素を取得する。

ポイント

・条件に一致する要素がない場合はリストの要素の型のデフォルト値を返す。
・条件に一致する要素が単数の場合に要素を取得する。
・条件に一致する要素が複数の場合はInvalidOperationExceptionが発生する。

コード
using System;
using System.Collections.Generic;
using System.Linq;

namespace Sample {
    /// <summary>
    /// メインプログラム
    /// </summary>
    public class Program {
        /// <summary>
        /// SingleOrDefaultの使い方
        /// </summary>
        static void Main() {
            // リストを生成
            var list = new List<int>();

            // リストに値を追加
            list.Add(1);
            list.Add(2);
            list.Add(3);
            list.Add(4);
            list.Add(5);
            list.Add(6);

            // 条件がない場合
            try {
                int result1 = list.SingleOrDefault();
            }
            catch(Exception ex) {
                Console.WriteLine("条件がない : " + ex.GetType());
            }

            // 該当する要素がない場合
            int result2 = list.SingleOrDefault(n => n % 10 == 0);
            Console.WriteLine("該当する要素がない : " + result2);

            // 該当する要素が単数の場合
            int result3 = list.SingleOrDefault(n => n % 5 == 0);
            Console.WriteLine("該当する要素が単数 : " + result3);

            // 該当する要素が複数の場合
            try {
                int result4 = list.SingleOrDefault(n => n % 2 == 0);
            }
            catch(Exception ex) {
                Console.WriteLine("該当する要素が複数 : " + ex.GetType());
            }
        }
    }
}
出力
条件がない : System.InvalidOperationException
該当する要素がない : 0
該当する要素が単数 : 5
該当する要素が複数 : System.InvalidOperationException