【发布时间】:2021-05-16 17:45:19
【问题描述】:
我知道Distinct() 通过使用默认的相等比较器来比较值,从序列中返回不同的元素。但我不太明白它在实体框架中是如何工作的。
例如,如果我有:
return dbContext.Products.Select(p => p.Dealer).Distinct();
生成的 SQL 将如何确定 Dealer 是否等于另一个 Dealer?它是比较所有列,还是做其他事情?
【问题讨论】:
-
为什么它与实体框架的工作方式不同?它像docs.microsoft.com/en-us/dotnet/api/… 中描述的那样工作,您可以覆盖
Equals()方法。 -
@TonyStark:因为默认比较器会比较每个对象的地址,这在 SQL 中没有任何意义。此外,您不能在 SQL 中覆盖
Equals()。
标签: c# entity-framework linq distinct