自定义IEqualityComparer <t>用于HashSet和其他对象</t>

时间:2014-06-16 03:24:48

标签: c# linq group-by hashset iequalitycomparer

我正在使用LINQ并使用多个对象进行分组。其中一个对象是HashSet。

var group = map.GroupBy(m => new{m.Item2.Clients,m.Item3,m.Item2.StartTimeID});

m.Item2.ClientCampaigns的类型为HashSet, m.Item3是一个单独的类,用于GetHashCode和Equals方法的方法 m.Item2.StartTimeId的类型为INT

现在我需要在这三个上做一个GROUP BY,传递一个自定义IEquality Comparer我猜?

如果它只是HasSet,我可以使用HashSet<ClientCampaign>.CreateSetComparer()作为GroupBy方法中的第二个参数。

在这种情况下,我应该使用什么?

1 个答案:

答案 0 :(得分:0)

我解决了! 我创建了一个包含所有参数的新类,我正在分组。 我创建了一个从IEqualityComparer扩展的新自定义Comparer。 此自定义比较器必须分别具有public bool Equalspublic int GetHashCode方法。 然后,我在代码中的GroupBy子句中使用了此Comparer。