Igrouping找不到自定义类的正确键

时间:2013-11-19 02:13:10

标签: c# igrouping

我有一个包含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 ='2013年9月9日'和SubTypeID = 3,以及TypeID = 1时,任何想法为什么它可能不会对这两个日志进行分组?我需要实现自定义比较吗?这里究竟缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

您必须覆盖Equals课程中的GetHashCodeSelector方法。否则,正在执行标准参考比较,这就是您的项目未组合在一起的原因。

您还应该阅读Why is it important to override GetHashCode when Equals method is overridden?