Entity framework 4 带IEnumerable的左外联接
使用EntityFramework4.1是否可以使用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 =
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的支持。我猜这是真的,但是如果你考虑反向,可以通过创建可枚举值的联合来实现。只需要右外连接,而不是左外连接