检查两个集合是否相等

本文关键字:集合 是否 两个 检查 | 更新日期: 2023-09-27 18:10:48

可能重复:
有没有一个内置的方法来比较C#中的集合
比较两个集合的相等

我有两个集合,我想检查其中包含的值是否不合格。

   SearchResultCollection Users1 = ds1.FindAll();
   SearchResultCollection Users2 = ds2.FindAll();

接下来,我使用2个foreach循环进行迭代,然后分配变量。

foreach (SearchResult users in Users1)
{
   string ManagerID = users.Properties["OrgUnitManagerName"][0].ToString();
   string subGroup = users.Properties["EmployeeSubGroup"][0].ToString();
   string cn = users.Properties["cn"][0].ToString();
   foreach (SearchResult user in Users2)
   {
     string uid = absaUser.Properties["uid"][0].ToString();
   }
}

我想做的是:检查User1中哪些用户不存在于user2中,并打印出该列表。

if(cn != uid)
  {
  }

这似乎不起作用。有什么想法吗?

检查两个集合是否相等

  1. 检查他们是否都有相同数量的记录,如果没有,请退出
  2. list1.Except(list2)-如果有任何结果,请退出

否则-成功,他们匹配

注意:这使用了LINQ扩展方法Except,请参阅此处:http://msdn.microsoft.com/en-us/library/bb300779.aspx。简单地说,list1.Except(list2)为您提供了list1中的所有项目,但list2中的项目除外。

对象需要实现Equals才能正确比较相等性。

使用

bool AreIdentical = (Users1.Count == Users2.Count ) && (Users1.Except (Users2).Count() == 0) && (Users2.Except (Users1).Count() == 0);

编辑-根据意见:

只在User1中获取用户而不在User2中使用:

var In1ButNotIn2 = Users1.Except (Users2);