Я думаю, вы путаете объект запроса с результатами этого запроса.Ваша первая переменная не содержит результатов, она содержит объект запроса.На данный момент запрос не был выполнен.Выполнение откладывается до тех пор, пока вам действительно не понадобятся результаты, и в вашем примере это делается, когда вы выполняете итерацию в цикле foreach.Вот почему первый оператор выполняется быстро, но итерация медленная.
Если вы хотите сохранить результаты запроса в results
, чтобы они уже вычислялись к моменту запуска цикла foreach, затем добавьтевызов ToList ().
var results =
(from a in Table
group a by a.Value into b
select new {Group = b}).ToList();