Вызов ToList
или ToArray
приведет к немедленной оценке запроса - это заблокирует поток, к которому они вызваны, до тех пор, пока не будет оценена вся коллекция и не возвращены результаты запроса.
Выследует выполнить итерацию запроса напрямую, не вызывая ни один из методов - это приведет к потоковой передаче результатов (при условии, что никакая другая оценка не будет выполнена).
Я предлагаю вам взглянуть на Task Parallel Library (TPL), если вам нужно выполнять параллельную работу.