LINQ中Equals和=之间有什么区别?

spo*_*ong 4 linq vb.net

LINQ中Equals=之间有什么区别?

Dim list As List(Of Foo) = (From a As Foo In FooList _
Join b As Bar In BarList _
On a.Something = b.Something _
Select a).ToList()
Run Code Online (Sandbox Code Playgroud)

Dim list As List(Of Foo) = (From a As Foo In FooList _
Join b As Bar In BarList _
On a.Something Equals b.Something _
Select a).ToList()
Run Code Online (Sandbox Code Playgroud)

Mat*_*nes 5

引自马特沃伦的蛾子

"C#有'等于'而不是'=='运算符的原因是要明确'on'子句需要你提供两个单独的表达式,这些表达式被比较为相等而不是单个谓词表达式.将模式映射连接到Enumerable.Join()标准查询运算符,该运算符指定两个单独的委托,用于计算可以比较的值.它需要它们作为单独的委托,以便构建一个查找表,并查询查找像SQL这样的完整查询处理器可以自由地检查单个谓词表达式并选择它将如何处理它.然而,要使LINQ操作类似于SQL,需要始终将连接条件指定为表达式树,简单的内存中对象案例的显着开销."

编辑

后来在文章中.

更新:Visual Basic团队的Vladimir Sadov告诉我,VB也使用Equals,原因几乎相同.