我在几个地方读到 LINQ 等于(在连接语法中)调用 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 被调用?