Entity framework 4 带IEnumerable的左外联接

Entity framework 4 带IEnumerable的左外联接,entity-framework-4,Entity Framework 4,使用EntityFramework4.1是否可以使用IEnumerable执行左外部联接 例如,假设我想计算每个月的订单数量 var range = Enumerable.Range(1,6).AsQueryable(); var result = range .GroupJoin(context.Orders, i => i, o => o.Month, new { Month =

使用EntityFramework4.1是否可以使用IEnumerable执行左外部联接

例如,假设我想计算每个月的订单数量

var range = Enumerable.Range(1,6).AsQueryable();
var result = range
               .GroupJoin(context.Orders, i => i, o => o.Month, new 
               {
                   Month = i, 
                   Count = m.Count()
               });
这将产生以下结果

Month, Count    
1, 0
2, 0
3, 10
4, 20
5, 0
6, 0

仅当您调用
context.Orders.ToList()
并将所有订单加载到应用程序时
IEnumerable
位于应用程序内存和上下文中。订单表示数据库中的数据。不能将数据库中的数据与应用程序内存中的数据联接。通过
AsQueryable
转换
IEnumerable
不会将其放入数据库


要直接使用ADO.NET和SQL实现您的需求,您必须创建并填充临时表并执行数据库连接,或者使用表值参数创建存储过程以执行数据库连接。这两种技术都不受EF的支持。

我猜这是真的,但是如果你考虑反向,可以通过创建可枚举值的联合来实现。只需要右外连接,而不是左外连接