列出<List <>>.包含()不起作用

bal*_*nta 5 c# contains list

我有以下代码:

List<List<int>> list = new List<List<int>>();
list.Add(new List<int> { 0, 1 });

if (list.Contains(new List<int> { 0, 1 }))      // false
  ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试检查列表是否包含{0,1},但条件是假的(我不知道为什么,可能是因为'new'关键字).如果这不是正确的方法,我想知道如何检查.

谢谢!

SLa*_*aks 22

List<T>.Contains调用Equals()方法来比较对象.
由于内部List<T>不会覆盖Equals,因此您将获得引用相等性.

您可以通过创建IEqualityComparer<List<T>>按值进行比较并将其传递给的自定义来解决此问题Contains().

您也可以使用LINQ:

if (list.Any(o => o.SequenceEqual(new[] { 0, 1 }))
Run Code Online (Sandbox Code Playgroud)