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になります。
-
C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説
GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と
-
C#のCompareTo()メソッドの使い方を解説
C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数