Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

IEnumerable.SingleOrDefaultメソッド

Enumerable.SingleOrDefault(TSource) メソッド (IEnumerable(TSource), Func(TSource, Boolean)) (System.Linq)
指定された条件を満たす、シーケンスの唯一の要素を返します。そのような要素が存在しない場合、既定値を返します。複数の要素が条件を満たす場合、このメソッドは例外をスローします。

ソースコード

using System;
using System.Linq;

namespace LinqSample {
    class Program {
        static void Main(string[] args) {
            int[] numbers = new int[] { 1, 2, 3, 4, 5 };
            // 該当する要素がない場合は既定値。
            {
                int number = numbers.SingleOrDefault(n => 5 < n);
                Console.WriteLine(number);
            }

            // 1つの要素に該当する。
            {
                int number = numbers.SingleOrDefault(n => 4 < n);
                Console.WriteLine(number);
            }

            // 複数の要素に該当する。
            try {
                int number = numbers.SingleOrDefault(n => 3 < n);
            } catch (Exception) {
                Console.WriteLine("Error");
            }

            Console.ReadKey();
        }
    }
}

実行結果