c#中的Distinct大多用于对数组去重,一般数组为基础的数据类型,例如 int,string.也可以用于对象去重,我们看看C#对Distinct方法的定义
Distinct对象数组去重复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class ReceiptOwnerEqualityComparer : IEqualityComparer<ReceiptOwner> { public bool Equals(ReceiptOwner x, ReceiptOwner y) { return x.ReceiptId == y.ReceiptId && x.UserName == y.UserName && x.SchoolName == y.SchoolName && x.DepartmentName == y.DepartmentName; }
public int GetHashCode(ReceiptOwner table) { var key = $"{table.ReceiptId}{table.UserName}{table.SchoolName}{table.DepartmentName}"; return key.GetHashCode(); } }
|
继承IEqualityComparer接口必须实现 Equals 和 GetHashCode 方法
我们比较的时候,传入一个 ReceiptOwnerEqualityComparer 的实体即可:
1
| .Distinct(new ReceiptOwnerEqualityComparer()).ToList();
|
参考
https://blog.csdn.net/lishuangquan1987/article/details/76096022