LINQ equals (結合構文) が比較対象の型に対して IEquatable を呼び出すことをいくつかの場所で読みましたが、結合でそれが起こっていることはわかりません。
List<ILData> list1 = new List<ILData> { /* Initialized with items */ };
List<ILData> list2 = new List<ILData> { /* Initialized with items */ };
var joinItems = (
from d1 in list1
join d2 in list2
on d1 equals d2
where d1.SomeValue == "7"
select d1).Distinct().ToList<ILData>();
以下を満たすインターフェース定義を提供したと仮定します。
ILData : IEquatable<ILData>
この場合、ILData::Equals が呼び出されないのはなぜですか?