如果我使用的IEnumerable的而不是下面的代码示例VAR,将SQL仅在foreach语句的执行而产生的?或者它会在评估Linq语句时执行?瓦尔VS IEnumerable的,当涉及到实体框架
var query = db.Customers.Where (c => c.Age > 18);
query = query.Where (c => c.State == "CO");
var result = query.Select (c => c.Name);
foreach (string name in result) // Only now is the query executed!
Console.WriteLine (name);
又如:
IEnumerable<Order> query = db.Orders.Where(o => o.Amount > 1000);
int orderCount = query.Count();
它会更好使用VAR(或IQueryable的),因为它会被执行SELECT COUNT(*)...当.Count之间的()被执行或它是否与上面显示的IEnumerable代码完全相同?
你答案的第二部分看起来不正确,或者我错过了什么? 'db'不是'DataContext'的一种类型吗? – Stijn
db是数据上下文,但这里重要的类型是“查询”变量的类型。在第一次,它是IOrderedQueryable第二它只是IQueryable 由于显式类型声明。 –