【发布时间】:2014-02-20 20:26:59
【问题描述】:
我不知道我在哪里犯了错误,但我无法比较(例如)整数列表的两个列表。
简单示例:
List<List<int>> A = new List<List<int>>();
A.Add(new List<int>(new int[] { 1 }));
A.Add(new List<int>(new int[] { 2 }));
List<List<int>> B = new List<List<int>>();
B.Add(new List<int>(new int[] { 1 }));
if (A.Contains(B[0])){
Console.WriteLine("TRUE");
else{
Console.WriteLine("FALSE");
}
返回 False。在这种情况下比较的正确方法是什么?我也尝试了Intersect 和Except,结果相同。
【问题讨论】:
-
你想用
A.Contains(B[0])实现什么?您是否希望它告诉您 A 中的任何列表是否与提供的列表具有完全相同的内容?相同顺序的相同元素?顺序重要吗?如果 B 中的列表是 A 中的列表的子集怎么办?这是真的还是假的? -
它是假的,因为它不是同一个列表引用(它直接比较列表,而不仅仅是其中的元素)。
-
外面的
List<>在这里不相关,你的核心问题是比较2List<int>。{1, 2}等于{2, 1}吗? -
在我的例子中,“相等”的意思是“相同顺序的相同元素”。