C# HashSet和其他对象的自定义IEqualityComparer

C# HashSet和其他对象的自定义IEqualityComparer,c#,linq,group-by,hashset,iequalitycomparer,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 现在我需要对这三个进行分组,通过传入一个自定

我正在使用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

现在我需要对这三个进行分组,通过传入一个自定义的IEquality比较器,我猜

如果只是HasSet,我可以使用HashSet.CreateSetComparer作为GroupBy方法中的第二个参数

在这种情况下,我应该使用什么?我解决了它! 我创建了一个包含所有参数的新类,我正在按分组。 我创建了一个新的自定义比较器,它是从IEqualityComparer扩展而来的。 此自定义比较器必须分别具有public bool Equals和public int GetHashCode方法。
然后,我在代码中的GroupBy子句中使用了这个比较器。

如果您可以让多个实例的成员Item2指向ClientCampaigns的完全相同的实例,那么这将按照您的方式工作。您可能需要对Item 3成员执行相同的操作。如果对象引用的是完全相同的实例,则它们将被视为相等。