使用Entity Framework 4.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
答案 0 :(得分:1)
仅当您致电context.Orders.ToList()
并将所有订单加载到您的应用程序时。 IEnumerable
位于应用程序内存中,context.Orders
表示数据库中的数据。您无法将数据库中的数据与应用程序内存中的数据相关联。将IEnumerable
转换为AsQueryable
不会将其转换为数据库。
要直接使用ADO.NET和SQL执行您的要求,您必须创建并填充临时表并执行数据库连接或使用表值参数创建存储过程以执行数据库连接。 EF都不支持这两种技术。