如何使用c#比较两个列表,并且如果在两个列表中发现相同的项[无重复],则添加日志。

3
我想比较两个列表,假设为A和B。我不知道正确的比较方法!
我之前使用了foreach循环[嵌套],但是会导致重复[考虑了排列/组合,这不是必要的]。
例如:
   foreach( A a in A_list)
   {
   foreach( B b in B_list)
     {
      if(a==b)
      {
       addlog(a);
      }
     }
   }

请指导我!


请看以下程序相关内容的翻译:现代方式查找两个对象列表中共同项的方法是什么? - L-Four
可能是比较两个列表C# linq的重复问题。 - Claudio Redi
我对C#和LINQ都很新...有什么简单的例子吗? - Emma
3个回答

5
您可以根据您的需求使用IntersectExcept方法。例如:
var commonValues = A.Intersect(B);  
var aMembersNotInB = A.Except(B); 
var bMembersNotInA = B.Except(A);  

5
var commonElements = A.Intersect(B); 
foreach(var element in commonElements)
{
     //your processing.
}

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


2
你可以使用 Enumerable.Intersect 方法。

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

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

这是一个演示

如果我想要比较它的属性,那么该如何比较呢? - Emma
@Emma 你是指比较属性吗? - Soner Gönül
我的列表A和B有属性,比如名称、ID等。所以如果我想要按照ID属性进行比较。 - Emma
@Emma 我不相信有所谓的比较属性这种东西。在我看来,你可能对某件事情有所误解。 - Soner Gönül

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接