私は2つのリストを持っています
ListA<Emp>
両方ともListB<Emp>
1000レコードを持っています。
Emp
従業員クラスのオブジェクトです。以下は私のEmployee
クラスです
public class Employee
{
int ID = 0;
string Name = String.Empty;
string Dept = String.Empty;
string Address = String.Empty;
int Age = 0;
string Email = String.Empty;
}
両方のリストが等しいかどうかを確認したいと思います。Empオブジェクトは異なる順序で配置できます。また、両方のリストにまったく同じ情報を持つ複数のEmpオブジェクトが存在する場合があります。それらも確認する必要があります。
リストを並べ替えて、を使用して比較してみましたSequenceEqual
Enumerable.SequenceEqual(ListA.OrderBy(s => s), ListB.OrderBy(s => s)
以下のエラーが発生します
At least one object must implement IComparable.
Exception Stack trace is as below
at System.Collections.Comparer.Compare(Object a, Object b)
at System.Collections.Generic.ObjectComparer`1.Compare(T x, T y)
at System.Linq.EnumerableSorter`2.CompareKeys(Int32 index1, Int32 index2)
at System.Linq.EnumerableSorter`1.QuickSort(Int32[] map, Int32 left, Int32 right)
at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()
at System.Linq.Enumerable.SequenceEqual[TSource](IEnumerable`1 first, IEnumerable`1 second, IEqualityComparer`1 comparer)
at System.Linq.Enumerable.SequenceEqual[TSource](IEnumerable`1 first, IEnumerable`1 second)
どうすればこれを実装できますか?また、リスト内のオブジェクトの数が1,000万に増える可能性があるため、これを行うための最速の方法を提供していただければ、より良いでしょう。ご協力いただきありがとうございます !
編集:すべての従業員は両方のリストに含まれている必要があります。順序は関係ありません。ただし、ListAに同じ従業員オブジェクトが5回含まれ(つまり、エントリが重複している)、ListBに従業員オブジェクトが4回含まれている場合、ListAとListBは等しくありません。