这个问题是link text的后续问题,因此在标题中重新审视。我将此作为一个新问题提出,因为在原始问题下所接受的答案和评论都表明,连接查询中使用的equals关键字仅指比较中的值类型。我认为这是误导如下。
在幕后,默认的相等比较器用于使用键控查找来比较键。连接在Enumerable.Join中实现,键可以是值或引用。
另一个答案中包含使用POCO的示例。我只能假设因为在主键上Linq to Sql中使用了连接,因此这些通常是简单的值类型,这就是出现混乱的地方。
等于比较值和对象的引用吗?
我弄错了吗?
答案 0 :(得分:2)
正如您在问题中所述,equals
关键字使用EqualityComparer<T>.Default
。因此,它将与EqualityComparer<T>.Default
比较的方式进行比较。
如果您想按值进行比较,可以制作工具IEquatable<T>