假设我有两个类A
并且B
具有不同数量的属性:
class A
{
public int Pro1 { get; set; }
public string Pro2 { get; set; }
}
class B
{
public int Pro1 { get; set; }
public string Pro2 { get; set; }
public bool Pro3 { get; set; }
}
为了进行结构相等比较以在 Lamda 方法中使用,例如:Distinct、Intesect... 我必须构建两个自定义EqualityComparer
:
public class CustomComparerA : EqualityComparer<A> {}
// use all Pro1 and Pro2
public class CustomComparerB : EqualityComparer<B> {}
// use all Pro1, Pro2 and Pro3
假设我有 10 个实体,我必须构建 10 个自定义比较器,看起来代码不太干净。环顾四周,发现 .NET 框架有一个内置类StructuralEqualityComparer
,但它标记为internal
,并且它没有通用版本。我看的是:
StructuralEqualityComparer<T>
这样我就可以重复使用:
listA.Distinct(new Structuralequalitycomparer<A>())
listA.Distinct(new Structuralequalitycomparer<B>())
有谁知道内置类 .NET 来支持这个?如果没有,有什么原因吗?
还是我们必须自己管理?