我有两个完全相同类型的对象的列表。一个比另一个有更多的项目。我想找出两者之间的差异,并尝试多种方式,但所有似乎都返回完整列表,而不是一个或多个项目的差异。获取相同类型对象的两个列表之间的区别
List<Permission> defaultPermList = defaultRole.Permissions.ToList();
foreach (var role in roles)
{
List<Permission> rolePermList = role.Permissions.ToList();
//All 3 below return the full set of defaultPermList. not the difference of the two lists
var permissions1 = defaultPermList.RemoveAll(x => rolePermList.Contains(x));
var permissions2 = defaultPermList.Where(x => !rolePermList.Contains(x)).ToList();
var permissions3 = defaultPermList.Except(rolePermList).ToList();
}
我看了很多其他的问题和答案,因此我所有的不同尝试。
它们可能是代表同一事物的不同对象。检查你的'Equals'方法(或制作一个)。你的尝试是正确的,但是与'相同'对象比较时,比较评估'false' – Rob