Ваша проблема заключается исключительно в том, что вы пытаетесь извлечь столько данных за один раз.Вы можете обойти эту проблему, установив больше памяти на машине, выполняющей запрос, но это всего лишь обман.
Лучше всего извлекать такие объемы данных поэтапно.
Вы вполне можетелегко читайте данные построчно и экспортируйте / добавляйте их в формате CSV в файл, и все это можно сделать с помощью хранимой процедуры.
Вы не говорите, какую базу данных используете, но обрабатываете такиеБольшие объемы данных - это то, с чем работают ядра СУБД.
Кроме того, при обработке больших объемов объектов данных в коде C # лучше всего использовать обобщенные типы, поскольку это не навязывает создание объектов втак же, как это делают классы, и, следовательно, уменьшает объем используемой памяти.