我有一个LINQ Distinct()语句,它使用我自己的自定义比较器,如下所示:
class MyComparer<T> : IEqualityComparer<T> where T : MyType
{
public bool Equals(T x, T y)
{
return x.Id.Equals(y.Id);
}
public int GetHashCode(T obj)
{
return obj.Id.GetHashCode();
}
}
...
var distincts = bundle.GetAllThings.Distinct(new MyComparer<MySubType>());
Run Code Online (Sandbox Code Playgroud)
这一切都很好,花花公子,按我的意愿工作.出于好奇,我是否需要定义自己的Comparer,还是可以用委托替换它?我以为我应该可以这样做:
var distincts = bundle.GetAllThings.Distinct((a,b) => a.Id == b.Id);
Run Code Online (Sandbox Code Playgroud)
但这不编译.有一个巧妙的伎俩吗?