2007-07-15

LINQ und Deferred Query Evalution

Die LINQ Expression wird nicht an der Deklarationsstelle ausgeführt sondern der Zugriff auf die Datenbank erfolgt beim ersten Zugriff auf die Entity Objekte. Wenn Sie die Objekte mit einer foreach Schleife auswerten, wird der Zugriff auf die Datenbank erst an dem Punkt erfolgen. Dieser Vorgang ist auch unter dem Begriff Deferred Query Evaluation bekannt.

List planeten = new List() {"Merkur", "Venus", "Erde", "Mars", "Jupiter", "Saturn", "Uranus", "Neptun"};

// LINQ Expression wird hier definiert...
var query = from planet in planeten select planet;

// LINQ Expression wird erst hier ausgeführt....
foreach (var planet in query)
{
Console.WriteLine(planet);
}


Es gibt bei den Aggregat Operatoren eine Ausnahme. Bei Verwendung von Aggreagat Operatoren wie Count, Min, Max und Average wird der LINQ Ausdruck sofort an der Stelle ausgeführt.

// LINQ Expression wird hier definiert und ausgeführt...
var count = (from planet in planeten

where planet.Length <= 5 select planet).Count();

No comments: