我有以下代码:
List<List<int>> list = new List<List<int>>();
list.Add(new List<int> { 0, 1 });
if (list.Contains(new List<int> { 0, 1 })) // false
...
我正在尝试检查列表是否包含{0,1},但条件为假(我不知道为什么,也许是因为'new'关键字)。
如果这不是正确的方法,我想知道如何检查。
谢谢!
最佳答案
List<T>.Contains
调用Equals()
方法来比较对象。
由于内部List<T>
不会覆盖Equals
,因此您将获得引用相等性。
您可以通过创建一个自定义的IEqualityComparer<List<T>>
来解决此问题,该Contains()
按值进行比较并将其传递给ojit_code。
您也可以只使用LINQ:
if (list.Any(o => o.SequenceEqual(new[] { 0, 1 }))
关于c# - List <List <>>。Contains()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9725647/