可能重复:
Is there a built-in method to compare collections in C#?
Comparing two collections for equality
我有两个集合,我想检查以查看其中包含的值是否不是eqaul。
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)
{
}
这似乎不起作用。 任何想法?
答案 0 :(得分:3)
使用
bool AreIdentical = (Users1.Count == Users2.Count ) && (Users1.Except (Users2).Count() == 0) && (Users2.Except (Users1).Count() == 0);
编辑 - 根据评论:
要在User1中使用User而不在User2中使用:
var In1ButNotIn2 = Users1.Except (Users2);
答案 1 :(得分:2)
list1.Except(list2)
- 如果有任何结果,请拯救否则 - 成功,他们匹配
注意:这使用LINQ扩展方法Except
,请参见此处:http://msdn.microsoft.com/en-us/library/bb300779.aspx。简而言之,list1.Except(list2)
为list1
中的所有项目提供了除list2
中的项目之外的所有项目。
对象需要实现Equals
才能正确比较相等性。