重複の可能性:
C# でコレクションを比較する組み込みメソッドはありますか?
C# 3.0 の一般的な 2 つの一般的なリストと比較する最良の方法は何ですか?
重複の可能性:
C# でコレクションを比較する組み込みメソッドはありますか?
C# 3.0 の一般的な 2 つの一般的なリストと比較する最良の方法は何ですか?
要素の順序に関係なく比較したい場合は、ここからUnorderedEqual<T>メソッドを試してください。
さもないと:
var list1 = new List<int> { 1, 2, 3 };
var list2 = new List<int> { 1, 2, 3 };
var areSame = Enumerable.SequenceEqual(list1, list2);
.NET 3.5 以降 (C# 3.0 に同梱されているフレームワークのバージョン) で2 つのシーケンスを比較する場合は、System.Linq 名前空間の Enumerable クラスで SeqenceEqual 拡張メソッドを使用する必要があります。
ただし、これには、IEnumerable<T>
比較する実装の型パラメーター T に既定の等値比較子が使用されます。
等しいかどうかをチェックする方法を変更したい場合はIEqualityComparer<T>
、各シーケンスの項目を比較するときに使用する SequenceEqual メソッドに の実装を渡す必要があります。
また、 ( で表されるように) 2 つのセットが等しいかどうかを確認しようとしている場合は、Enumerable クラスで Except 拡張メソッドをIEnumerable<T>
使用して、結果セットにエントリがないことを確認することをお勧めします。どちらの実装も同じ数のエントリを持ちます (Except は、異なる長さのシーケンスが渡されても空のシーケンスを返すことができるため)、Count 拡張メソッドで行うことができます。IEnumerable<T>
この回答を確認してください。2 つのシーケンスに同じ要素が含まれているかどうかを判断する方法が提供されています。