不同
从 IEnumerable 返回唯一值。使用默认的相等比较器确定唯一性。
int[] array = { 1, 2, 3, 4, 2, 5, 3, 1, 2 };
var distinct = array.Distinct();
// distinct = { 1, 2, 3, 4, 5 }
要比较自定义数据类型,我们需要实现 IEquatable<T> 接口并为该类型提供 GetHashCode 和 Equals 方法。或者可以覆盖相等比较器:
class SSNEqualityComparer : IEqualityComparer<Person> {
public bool Equals(Person a, Person b) => return a.SSN == b.SSN;
public int GetHashCode(Person p) => p.SSN;
}
List<Person> people;
distinct = people.Distinct(SSNEqualityComparer);