3

我想比较两个列表,比如说 A 和 B。我不知道比较它们的正确方法!

我使用了 foreach 循环 [嵌套],这会导致重复 [正在考虑排列/组合,这不是必需的。]

例如。

   foreach( A a in A_list)
   {
   foreach( B b in B_list)
     {
      if(a==b)
      {
       addlog(a);
      }
     }
   }

请指导我!

4

3 回答 3

5

您可以根据自己的需要使用Intersect或方法。Except例如:

var commonValues = A.Intersect(B);  
var aMembersNotInB = A.Except(B); 
var bMembersNotInA = B.Except(A);  
于 2013-03-26T12:32:58.610 回答
5
var commonElements = A.Intersect(B); 
foreach(var element in commonElements)
{
     //your processing.
}

如果要定义自己的相等条件,可能需要实现IEquatable 。

于 2013-03-26T12:33:46.257 回答
2

你可以使用Enumerable.Intersect方法。

通过使用默认相等比较器比较值来生成两个序列的集合交集。

var newlist = A_list.Intersect(B_list); 
foreach(var i in newlist)
{
  // do your work
}

这是一个DEMO.

于 2013-03-26T12:34:07.513 回答