C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のQueryable.SequenceEqual()メソッドの使い方を解説

C#で2つのシーケンス(要素の並び)が等しいかどうかを確認したい場合には、SequenceEqual()メソッドを使用します。このメソッドは、両方のシーケンスが同じ要素数を持ち、かつ同じ順序で同じ要素を含んでいる場合にtrueを返します。

シーケンスの準備

まず、比較対象となる2つのリストを作成します。ここでは、同じEmployeeオブジェクトを参照する2つのリストを用意します。

Employee emp1 = new Employee { EmployeeRank = 4, EmpName = "Amit", EmpMarks = 90 };
Employee emp2 = new Employee { EmployeeRank = 5, EmpName = "Raman", EmpMarks = 95 };
List<Employee> employee1 = new List<Employee> { emp1, emp2 };
List<Employee> employee2 = new List<Employee> { emp1, emp2 };

SequenceEqual()メソッドで等価性を判定する

次に、AsQueryable()でクエリ可能な形式に変換し、SequenceEqual()メソッドを呼び出して2つのシーケンスが等しいかどうかを判定します。

employee1.AsQueryable().SequenceEqual(employee2);

サンプルコード

以下は、実際に動作を確認できる完全なサンプルコードです。

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        Employee emp1 = new Employee { EmployeeRank = 4, EmpName = "Amit", EmpMarks = 90 };
        Employee emp2 = new Employee { EmployeeRank = 5, EmpName = "Raman", EmpMarks = 95 };
        List<Employee> employee1 = new List<Employee> { emp1, emp2 };
        List<Employee> employee2 = new List<Employee> { emp1, emp2 };

        bool res = employee1.AsQueryable().SequenceEqual(employee2);
        Console.WriteLine("Lists are equal? = " + res);
    }
}

public class Employee {
    public int EmployeeRank { get; set; }
    public string EmpName { get; set; }
    public int EmpMarks { get; set; }
}

実行結果

Lists are equal? = True

ポイント解説

SequenceEqual()メソッドには以下のような特徴があります。

  • 要素の順序も含めて比較されるため、順序が異なる場合はfalseが返されます。
  • 参照型の場合は既定で参照の等価性が比較されるため、値による比較を行いたい場合はカスタムのIEqualityComparer<T>を引数として渡すことができます。
  • この例ではemployee1とemployee2が同じオブジェクトインスタンス(emp1とemp2)を保持しているため、結果はTrueになります。
  1. C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説

    GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と

  2. C#のCompareTo()メソッドの使い方を解説

    C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数