如果我使用的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 由於顯式類型聲明。 –