0

我有一个父列表如下。

IList<List<int>> parentList = new List<List<int>>();
parentList.Add(new List<int> { 0, 1, 2 });
parentList.Add(new List<int> { 3, 4, 5 });
parentList.Add(new List<int> { 6, 7, 8 });
parentList.Add(new List<int> { 0, 4, 8 });
parentList.Add(new List<int> { 2, 4, 6 });
parentList.Add(new List<int> { 0, 3, 6 });
parentList.Add(new List<int> { 1, 4, 7 });
parentList.Add(new List<int> { 2, 5, 8 });

作为我程序的一部分,我正在生成一个列表

List<int> listToFind = new List<int>{1, 4, 7};

当我尝试执行以下操作时,虽然它应该返回 true,但它返回 false。我在这里做错了吗?

parentList.Contains(listToFind);

任何建议将不胜感激。

谢谢,

扬凯格

4

2 回答 2

0

You can try the following:

parentList.Where(pl => listToFind.All(pl.Contains(lf)));
于 2013-09-10T08:50:12.617 回答
0

要比较列表,请使用SequenceEqual( MSDN )

在您的情况下,您可以将其与Any

var containsListToFind = parentList.Any(x => x.SequenceEqual(listToFind));

Contains不起作用,因为它使用.Equals列表中对象的默认方法。对于List<T>,这是参考比较,而不是值比较。由于listToFind是与in 中的不同的对象parentList,因此引用不同并且Contains不会找到任何东西。

于 2013-09-10T08:47:38.400 回答