Führt foreach die Abfrage nur einmal aus?

Ich habe eine Liste der Elemente und eine LINQ-Abfrage darüber. Würde eine nachfolgende foreach-Schleife mit der verzögerten Ausführung von LINQ die Abfrage nur einmal oder für jede Runde in der Schleife ausführen?

Angesichts dieses Beispiels (AusEinführung in LINQ-Abfragen (C #) auf MSDN)

    // The Three Parts of a LINQ Query: 
    //  1. Data source. 
    int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

    // 2. Query creation. 
    // numQuery is an IEnumerable<int> 
    var numQuery =
        from num in numbers
        where (num % 2) == 0
        select num;

    // 3. Query execution. 
    foreach (int num in numQuery)
    {
        Console.Write("{0,1} ", num);
    }

Oder mit anderen Worten:würde es einen Unterschied geben, wenn ich hätte:

    foreach (int num in numQuery.ToList())

Und wäre es wichtig, wenn sich die zugrunde liegenden Daten nicht in einem Array befinden, sondern in einer Datenbank?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage