我有两个列表
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)
我该如何实现呢?另外,如果你们能提供给我最快的方法会更好,因为 List 中的对象数量可能会增长到 1000 万。谢谢你的帮助 !
编辑:每个员工都必须在两个列表中,顺序无关紧要。但是,如果 ListA 包含 5 次相同的员工对象(这意味着一些重复的条目),而 ListB 包含 4 次员工对象,则 ListA 和 ListB 不相等。