【发布时间】:2011-12-04 05:59:29
【问题描述】:
我正在使用 distinct 说
使用默认值从序列中返回不同的元素 相等比较器来比较值。
然而,当我运行这段代码时,我得到了多个相同的 id
var ls = ls2.Distinct().OrderByDescending(s => s.id);
foreach (var v in ls)
{
Console.WriteLine(v.id);
}
我在课堂上实现了这些,但这仍然不起作用
class Post : IComparable<Post>, IEqualityComparer<Post>, IComparer<Post>
这就是我的实现方式
int IComparable<Post>.CompareTo(Post other)
{
return (int)(id - other.id);
}
bool IEqualityComparer<Post>.Equals(Post x, Post y)
{
return x.id == y.id;
}
int IEqualityComparer<Post>.GetHashCode(Post obj)
{
throw new NotImplementedException();
}
int IComparer<Post>.Compare(Post x, Post y)
{
return (int)(x.id - y.id);
}
【问题讨论】:
-
根据 MSDN 文档,您只需要实现 IEquatable
- 请参阅 msdn.microsoft.com/en-us/library/bb348436.aspx 以获得完整的示例。