Unterschiede bei der Verwendung von IEnumerable und IQueryable als eine Art ObjectSet

Wie ich es verstehe, wenn ich die LINQ-extension-Methoden (mit lambda expression syntax) auf IQueryable das ist in der Tat Instanz des ObjectSet Sie sind, übersetzt LINQ to SQL-Abfragen. Was ich meine ist, dass das Kommando

IQueryable<User> users = db.UserSet;
var users32YearsOld = users.Where(user => user.Age == 32);

ist genau das gleiche wie

IQueryable<User> users = db.UserSet;   
var users32YearsOld = from user in users where user.Age == 32 select user;

Also nicht von Ihnen trifft der Datenbank, bis Sie users32YearsOld aufgezählt sind, im "Zyklus" oder so. (Hoffe ich verstehe das richtig).

Aber was wird passieren, wenn ich keine Maske, die ObjectSet als IQueryable aber als IEnumerable ? Also wenn der Typ es ist IEnumerable ?

IEnumerable<User> users = db.UserSet;
var users32YearsOld = users.Where(user => user.Age == 32);

Ist es treffen wird sofort auf der Datenbank (wenn ja, dann Wann ? Rechts in der ersten Zeile oder der zweiten) ? Oder wird es sich so Verhalten, wie die vorigen Befehl ist nicht der hit-Datenbank bis users32YearsOld aufgelistet ? Gibt es einen Unterschied, wenn ich folgenden statt ?

IEnumerable<User> users = db.UserSet;
var users32YearsOld = from user in users where user.Age == 32 select user;

Danke

InformationsquelleAutor Rasto | 2011-03-24
Schreibe einen Kommentar