Beispiel für eine verzögerte Ausführung

Aktualisiert: November 2007

In diesem Thema wird gezeigt, wie sich die verzögerte Ausführung (Deferred Execution) und die verzögerte Auswertung (Lazy Evaluation) auf die Ausführung Ihrer LINQ to XML-Abfragen auswirken.

Beispiel

Im folgenden Beispiel wird gezeigt, in welcher Reihenfolge die Ausführung erfolgt, wenn eine Erweiterungsmethode verwendet wird, die mit verzögerter Ausführung arbeitet. Das Beispiel deklariert ein Array aus drei Zeichenfolgen. Anschließend durchläuft es die von ConvertCollectionToUpperCase zurückgegebene Auflistung.

Hinweis:

Im folgenden Beispiel wird das C#-yield return-Konstrukt verwendet. Da es in Visual Basic 2008 keine passende Entsprechung gibt, wird dieses Beispiel nur in C# bereitgestellt.

public static class LocalExtensions
{
    public static IEnumerable<string>
      ConvertCollectionToUpperCase(this IEnumerable<string> source)
    {
        foreach (string str in source)
        {
            Console.WriteLine("ToUpper: source {0}", str);
            yield return str.ToUpper();
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        string[] stringArray = { "abc", "def", "ghi" };

        var q = from str in stringArray.ConvertCollectionToUpperCase()
                select str;

        foreach (string str in q)
            Console.WriteLine("Main: str {0}", str);
    }
}

Dieses Beispiel führt zur folgenden Ausgabe:

ToUpper: source abc
Main: str ABC
ToUpper: source def
Main: str DEF
ToUpper: source ghi
Main: str GHI

Beachten Sie, dass beim Durchlaufen der von ConvertCollectionToUpperCase zurückgegebenen Auflistung erst jedes Element aus dem Quellzeichenfolgenarray abgerufen und in Großbuchstaben umgewandelt wird, bevor das nächste Element aus dem Quellzeichenfolgenarray abgerufen wird.

Wie Sie sehen, wird das gesamte Array von Zeichenfolgen erst dann in Großbuchstaben umgewandelt, wenn jedes Element in der zurückgegebenen Auflistung in der foreach-Schleife in Main verarbeitet wurde.

Nächste Schritte

Im nächsten Thema dieses Lernprogramms wird das Verketten von Abfragen gezeigt:

Siehe auch

Konzepte

Lernprogramm: Verketten von Abfragen