Foreach выполняет запрос только один раз?

У меня есть список предметов и запрос LINQ по ним. Теперь, с отложенным выполнением LINQ, будет ли последующий цикл foreach выполнять запрос только один раз или для каждого поворота в цикле?

Учитывая этот пример (взято изВведение в LINQ Queries (C #), на 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);
    }

Или, другими словами,была бы какая-то разница, если бы я:

    foreach (int num in numQuery.ToList())

И имеет ли это значение, если лежащие в основе данные находятся не в массиве, а в базе данных?

Ответы на вопрос(4)

Ваш ответ на вопрос