辞書を使用している間、私は常にGetHashCodeとEqualsをオーバーライドします(または辞書にカスタム比較子を提供します)。
キーとして匿名クラスを作成すると、裏で何が起こりますか?
サンプルコード...
var groups=(from item in items
group item by new { item.ClientId, item.CustodianId, item.CurrencyId }
into g
select new {
Key=g.Key,
Sum=g.Sum(x => x.Cash)
}).ToDictionary(item=>item.Key,item=>item.Sum);
このコードは期待どおりの結果をもたらしますが、匿名クラスにGetHashCodeメソッドとEqualsメソッドを提供していません。このコードは、匿名クラスのアイテムに基づいてアイテムをグループ化するのに失敗するべきではありませんか?