两个列表的交集会导致一个空列表
本文关键字:列表 一个 两个 | 更新日期: 2023-09-27 18:27:06
我有两个列表
List<clsEntity> usersWithNPIRCodingPermission // It has count 159
List<clsEntity> usersWithRaiseReq // It has count 219
当在这些上做交集时(有55条记录,但我的下一行得到了空列表)
List<clsEntity> users = usersWithRaiseReq.Intersect(usersWithNPIRCodingPermission).ToList();
为什么生成的users
列表为空?
如果类型不是基元(例如int
等),则需要为其实现相等比较器
public class UsersComparer : IEqualityComparer<clsEntity>
{
public bool Equals(clsEntity x, clsEntity y)
{
if (Object.ReferenceEquals(x, y)) return true;
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.ID == y.ID; // or whatever you use to determine equality
}
public int GetHashCode(clsEntity x)
{
if (Object.ReferenceEquals(x, null)) return 0;
return x.ID.GetHashCode();
}
}
用法:
List<clsEntity> users = usersWithRaiseReq.Except(
usersWithNPIRCodingPermissionn, new UsersComparer()).ToList();