有很多使用 Linq to Sql 进行外连接的示例,所有这些示例都依赖于DefaultIfEmpty()
Linq to Entity Framework 不支持的示例。
这是否意味着使用 .NET 3.5 无法使用 Linq to Entity 进行外部连接(我知道 DefaultIfEmpty 随 4.0 一起提供——但这对我来说目前不是一个选项)
有人可以提供一个使用 Linq to EntityFramework 的简洁示例。
有很多使用 Linq to Sql 进行外连接的示例,所有这些示例都依赖于DefaultIfEmpty()
Linq to Entity Framework 不支持的示例。
这是否意味着使用 .NET 3.5 无法使用 Linq to Entity 进行外部连接(我知道 DefaultIfEmpty 随 4.0 一起提供——但这对我来说目前不是一个选项)
有人可以提供一个使用 Linq to EntityFramework 的简洁示例。
在 LINQ to Entities 中,考虑关系而不是 SQL 连接。Person
因此,在具有一对零或一对关系的实体上的 SQL 外连接的字面意思CustomerInfo
是:
var q = from p in Context.People
select new
{
Name = p.Name,
IsPreferredCustomer = (bool?)p.CustomerInfo.IsPreferredCustomer
};
L2E 将合并连接,因此如果 CustomerInfo 为 null,则整个表达式的计算结果为 null。因此强制转换为可空 bool,因为推断的不可空 bool 类型无法保持该结果。
对于一对多,您通常需要一个层次结构,而不是一个扁平的 SQL 风格的结果集:
var q = from o in Context.Orders
select new
{
OrderNo = o.OrderNo,
PartNumbers = from od in o.OrderDetails
select od.PartNumber
}
这就像一个左连接,因为你仍然得到没有细节的订单,但它是一个像 OO 的图而不是像 SQL 的集合。