检查两个集合是否相等
本文关键字:集合 是否 两个 检查 | 更新日期: 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)
{
}
这似乎不起作用。有什么想法吗?
- 检查他们是否都有相同数量的记录,如果没有,请退出
- 做
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);