LINQ加入多个领域

Kam*_*yar 5 c# linq lambda linq-to-entities entity-framework

使用Lambda表达式在L2E中等效的以下T-SQL查询是什么?

Select * from a INNER JOIN b on a.Foo = b.Foo OR a.Foo = b.Bar  
Run Code Online (Sandbox Code Playgroud)

我想在a.Foo等于b.FooOR 时加入a和bb.Bar

谢谢.

Jon*_*eet 8

您不能在LINQ中使用实际的join子句进行"或"样式连接.LINQ中的所有连接子句都是equijoins.你最接近的是where子句:

var query = from a in A
            from b in B
            where a.Foo == b.Foo || a.Foo == b.Bar
            select new { a, b };
Run Code Online (Sandbox Code Playgroud)

  • @MarekGrzenkowicz:不幸的是我的正常参考源(维基百科:)没有提供足够的细节.但从逻辑上讲,具有"AND"的等值连接可以被视为等值连接,在多列键上进行单一的相等比较(这是您在LINQ中对其进行建模的方式).与"OR"s*的连接不能以这种方式看到. (2认同)