リストの唯一の要素を取得する方法の1つに「Single」メソッドがあります。
LINQを使った方法になります。
サンプルコードを交えて解説したいと思います。
説明
リストから唯一の要素を取得する。
ポイント
・条件に一致する要素がない場合はInvalidOperationExceptionが発生する。
・条件に一致する要素が単数の場合に要素を取得する。
・条件に一致する要素が複数の場合はInvalidOperationExceptionが発生する。
例
コード
using System; using System.Collections.Generic; using System.Linq; namespace Sample { /// <summary> /// メインプログラム /// </summary> public class Program { /// <summary> /// Singleの使い方 /// </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.Single(); } catch(Exception ex) { Console.WriteLine("条件がない : " + ex.GetType()); } // 該当する要素がない場合 try { int result2 = list.Single(n => n % 10 == 0); } catch(Exception ex) { Console.WriteLine("該当する要素がない : " + ex.GetType()); } // 該当する要素が単数の場合 int result3 = list.Single(n => n % 5 == 0); Console.WriteLine("該当する要素が単数 : " + result3); // 該当する要素が複数の場合 try { int result4 = list.Single(n => n % 2 == 0); } catch(Exception ex) { Console.WriteLine("該当する要素が複数 : " + ex.GetType()); } } } }
出力
条件がない : System.InvalidOperationException 該当する要素がない : System.InvalidOperationException 該当する要素が単数 : 5 該当する要素が複数 : System.InvalidOperationException