0

我有一个包含 3 个字段的自定义类:

public class Selector
{
    public long? SubTypeID {get;set;}
    public int TypeID { get; set; }
    public DateTime? ActionDate { get; set; }
}

IEnumerable<IGrouping<Selector, Log>> query = src.GroupBy(td => new Selector() 
    {SubTypeID = td.SubTypeID, ActionDate = td.ActionDate, TypeID = td.ActivityTypeID}, 
    td => td);

当我有两个包含 ActionDate = 'Sept 9, 2013' 和 SubTypeID = 3 和 TypeID = 1 的日志时,知道为什么它可能不会对这两个日志进行分组吗?我需要实现自定义比较吗?这里实际上缺少什么?

谢谢!

4

1 回答 1

2

你必须在你的类中覆盖EqualsGetHashCode方法。Selector否则将执行标准参考比较,这就是您的项目未分组在一起的原因。

您还应该阅读为什么在重写 Equals 方法时重写 GetHashCode 很重要?

于 2013-11-19T02:15:06.827 回答