[.NET クラスライブラリ Tips][LINQ] シーケンス内の唯一の要素を取得する(Singleメソッド)

スポンサーリンク

概要

Singleメソッドは、LINQ の拡張メソッドの一つであり、シーケンス内の唯一の要素を取得するために使用されます。シーケンスに指定した条件を満たす要素が複数存在する場合、例外がスローされます。

公式サイト情報はコチラを参照してください。

構文

以下はSingleメソッドの構文です。

public static TSource Single(this IEnumerable source);
public static TSource Single(this IEnumerable source, 
  Func<TSource, bool> predicate);

Singleメソッドは、IEnumerable を実装する型に対して呼び出すことができます。引数には、sourceとpredicateがあります。

source:シーケンスを指定します。
predicate:シーケンス内の要素に適用する条件を指定します。

また、Singleメソッドは、以下のような例外をスローすることがあります。

InvalidOperationException:シーケンスが空の場合。
InvalidOperationException:条件を満たす要素が複数存在する場合。

使用例

以下はSingleメソッドの使用例です。

using System.Linq;

var numbers = new List() { 1, 2, 3, 4, 5 };

// Singleメソッドを使用して、シーケンス内の唯一の要素を取得する
var singleNumber = numbers.Single();
Console.WriteLine(singleNumber); // 例:1

// Singleメソッドを使用して、条件を満たす要素を取得する
var oddNumber = numbers.Single(n => n % 2 == 1);
Console.WriteLine(oddNumber); // 例:1

// 複数の要素が条件を満たす場合、InvalidOperationExceptionがスローされる
var multipleNumbers = numbers.Where(n => n % 2 == 0);
var result = multipleNumbers.Single(); // InvalidOperationExceptionがスローされる

上記の例では、最初のSingleメソッドはシーケンス内の最初の要素を取得し、2番目のSingleメソッドは条件を満たす唯一の要素を取得しています。3番目の例では、複数の要素が条件を満たすため、例外がスローされています。Singleメソッドを使う際は、条件によっては例外が発生することに注意する必要があります。

.NET クラス Tips 一覧

これまでに紹介した .NET Tips 一覧はこちら

Please follow and like us:

コメント

タイトルとURLをコピーしました