2014-06-16 26 views
0

我正在使用LINQ並使用多個對象進行組合。其中一個對象是HashSet。HashSet和其他對象的自定義IEqualityComparer <T>

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比較器我猜?

如果它只是HasSet,我可以使用HashSet<ClientCampaign>.CreateSetComparer()作爲GroupBy方法中的第二個參數。

在這種情況下,我應該使用什麼?

+0

如果您可以讓多個實例的成員Item2指向ClientCampaigns的完全相同的實例,那麼這將以您擁有它的方式工作。您可能需要爲Item 3成員執行相同操作。如果對象指向完全相同的實例,則對象將被視爲「平等」。 –

回答

0

我解決了! 我創建了一個包含所有參數的新類,我正在分組。 我已經創建了一個自定義的比較器,它從IEqualityComparer擴展而來。 這個自定義比較器必須分別有public bool Equalspublic int GetHashCode方法。 然後,我在代碼中的GroupBy子句中使用了此Comparer。

相關問題