Luk*_*keH 18
如果列表项的顺序是相关的:
bool areEqual = a.SequenceEqual(b);
Run Code Online (Sandbox Code Playgroud)
如果要将列表视为无序集:
// assumes that the list items are ints
bool areEqual = new HashSet<int>(a).SetEquals(b);
Run Code Online (Sandbox Code Playgroud)
(如果需要该功能,SequenceEqual
方法和HashSet<T>
构造函数都有带IEqualityComparer<T>
参数的重载.)
那么,这取决于你如何解释你的名单.
如果您将它们视为元组(因此列表中元素的顺序很重要),那么您可以使用以下代码:
public bool AreEqual<T>(IList<T> A, IList<T> B)
{
if (A.Count != B.Count)
return false;
for (int i = 0; i < A.Count; i++)
if (!A[i].Equals(B[i]))
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果您将列表视为集合(因此元素的顺序无关紧要),那么......您使用的是错误的数据结构:
public bool AreEqual<T>(IList<T> A, IList<T> B)
{
HashSet<T> setA = new HashSet<T>(A);
return setA.SetEquals(B);
}
Run Code Online (Sandbox Code Playgroud)