[.NET クラスライブラリ Tips][LINQ] 2つのシーケンスが等しいかどうかを判断する(SequenceEqualメソッド)

スポンサーリンク

概要

SequenceEqualメソッドは、2つのシーケンスが等しいかどうかを判断するメソッドです。シーケンスの中身が同じであればtrueを返します。

この記事では、SequenceEqualメソッドの使用例について説明します。

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

構文

「SequenceEqual メソッド」は、2つのシーケンスが等しいかどうかを比較するためのメソッドです。

構文は以下のようになっています。

public static bool SequenceEqual(
  this IEnumerable first, 
  IEnumerable second);

第1引数 first は比較する最初のシーケンス、第2引数 second は比較する2番目のシーケンスを表します。

このメソッドは、要素の比較には等値比較子が使用されます。シーケンス内の要素が等しければ、シーケンスが等しいとみなされます。要素の比較には、GetHashCode メソッドと Equals メソッドが使用されます。これらのメソッドがオーバーライドされていない場合は、各要素の型で定義された既定の等値比較子が使用されます。

このメソッドは、シーケンス内の要素の順序が同じであるかどうかも考慮します。2つのシーケンスの要素の順序が異なる場合は、シーケンスが等しくないと判断されます。

また、シーケンス内の要素の数が異なる場合、シーケンスが等しくないと判断されます。

使用例

 

以下は、SequenceEqualメソッドを使用して2つのシーケンスが同じ要素を持つかどうかを判定する例です。

int[] arr1 = { 1, 2, 3 };
int[] arr2 = { 1, 2, 3 };

bool isEqual = arr1.SequenceEqual(arr2);
Console.WriteLine(isEqual);  // True

string[] strArr1 = { "apple", "banana", "orange" };
string[] strArr2 = { "Apple", "Banana", "Orange" };

// 文字列の比較は大文字小文字を区別するため、falseになる
isEqual = strArr1.SequenceEqual(strArr2);
Console.WriteLine(isEqual);  // False

// 大文字小文字を無視して比較する場合は、StringComparer.OrdinalIgnoreCaseを使用する
isEqual = strArr1.SequenceEqual(strArr2, StringComparer.OrdinalIgnoreCase);
Console.WriteLine(isEqual);  // True

この例では、SequenceEqualメソッドを使用して、arr1とarr2が同じ要素を持つかどうかを判定しています。isEqual変数には、arr1とarr2が同じ要素を持つ場合はtrue、異なる場合はfalseが設定されます。

また、2つ目の例では、SequenceEqualメソッドを使用して、strArr1とstrArr2が同じ要素を持つかどうかを判定しています。ただし、文字列の比較は大文字小文字を区別するため、isEqual変数にはfalseが設定されます。その後、StringComparer.OrdinalIgnoreCaseを使用して、大文字小文字を無視して比較することで、isEqual変数にはtrueが設定されます。

.NET クラス Tips 一覧

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

 

 

Please follow and like us:

コメント

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