C#比较对象列表的两个列表

艾佛

我不知道我在哪里犯错,但是我无法比较(例如)整数列表的两个列表。

简单的例子:

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。在这种情况下进行比较的正确方法是什么?我也尝试过IntersectExcept并且结果相同。

鲍勃森

这可能有助于形象化:

A:
   A[0]:
       A[0][0]: 1
   A[1]:
       A[1][0]: 2
B:
   B[0]:
       B[0][0]: 1

当您打电话时A.Contains(),您要询问要测试的对象是A[0]还是A[1]由于您正在传递它B,并且B两者都不是,因此它返回false。即使您通过B[0]B[0][0],您仍然会得到假的,因为这些都不相同的对象A[0]A[1]

SequenceEqual()是用于测试两个内容是否List相同的函数因此,您想测试一个A[0]A[1]是否SequenceEqualB[0](即A[0][0] == B[0][0]或者A[1][0] == B[0][0])。

最好的方法是使用LINQ函数.Any()A.Any(a => a.SequenceEqual(B[0]))将测试的B[0]所有内容A如果要比较所有 B元素和所有 A元素,则需要类似的东西A.Any(a => B.Any(b => a.SequenceEqual(b))可以将其翻译为:

foreach (var a in A) // A[0], A[1], etc.
{ 
    foreach (var b in B) // B[0], B[1], etc.
    {
       // is our current a value matching the current b value?
       // i.e. A[0] is exactly the same as B[0] on the first pass
       if (a.SequenceEqual(b)) return true; 
    }
}
return false;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

断言以比较两个对象C#列表

来自分类Dev

比较两个对象C#的列表计数

来自分类Dev

如何在C#中比较两个对象列表?

来自分类Dev

给定两个对象列表,如何与C#中的新KV比较?

来自分类Dev

通过指定的方法C#比较两个自定义对象列表

来自分类Dev

比较两个复杂的列表对象

来自分类Dev

如何比较两个对象列表?

来自分类Dev

比较两个对象数组列表

来自分类Dev

比较两个对象数组列表

来自分类Dev

在C#中通过LINQ比较两个列表?

来自分类Dev

如何在C#中比较两个列表?

来自分类Dev

C#比较两个强类型列表

来自分类Dev

c#比较两个列表/表

来自分类Dev

C# 比较两个列表 (FileData)

来自分类Dev

C#合并两个对象列表

来自分类Dev

C#用对象区分两个列表

来自分类Dev

C#用对象区分两个列表

来自分类Dev

比较两个列表并生成具有匹配结果的新列表C#

来自分类Dev

比较两个列表以获取同时出现在两个列表中的对象

来自分类Dev

比较两个列表以获取同时出现在两个列表中的对象

来自分类Dev

比较两个对象列表与特定属性上的LINQ

来自分类Dev

比较LINQ的where子句中的两个对象列表

来自分类Dev

比较两个不带for循环的不同对象列表

来自分类Dev

比较两个列表中对象的值

来自分类Dev

Mockito:在两个列表上的assertEquals,比较对象变量

来自分类Dev

比较两个相同类型的对象的列表

来自分类Dev

比较两个相同类型的对象列表

来自分类Dev

如何比较两个对象列表之间的字段?

来自分类Dev

Mockito:在两个列表上的assertEquals,比较对象变量