【发布时间】:2011-07-12 14:23:12
【问题描述】:
我有 tableA 和 tableB。
我想使用 lambda 表达式执行左连接。这是相等的sql语句:
SELECT *
FROM tableA A
LEFT JOIN tableB B ON A.userId=B.userId
如何使用 lambda 表达式做到这一点?
【问题讨论】:
标签: c# .net entity-framework lambda
我有 tableA 和 tableB。
我想使用 lambda 表达式执行左连接。这是相等的sql语句:
SELECT *
FROM tableA A
LEFT JOIN tableB B ON A.userId=B.userId
如何使用 lambda 表达式做到这一点?
【问题讨论】:
标签: c# .net entity-framework lambda
It's usually an error to use an explicit join in LINQ to Entities.
改为使用导航属性:
var q = Context.TableAs.Select(a => new { a.Foo, a.TableB.Bar });
LINQ to Entities 将合并空引用。所以如果a.TableB 是null 对于TableAs 中的某些记录,那么a.TableB.Bar 将返回null 而不是给你一个空引用异常。所以它的行为类似于 SQL LEFT JOIN
【讨论】:
joins,主要是仅当您出于某种原因无法添加它们时。
Join() 和 DefaultIfEmpty()。但是对于 L2E,通常不要这样做。