Processando grandes conjuntos de dados usando o LINQ

Toda vez que escrevo um programa do formulário abaixo usando o LINQ to SQL, acabo com um programa que simplesmente pega mais e mais memória à medida que é executado e cai em um heap consumindo 2 GB, talvez com apenas 25.000 registros. Eu sempre acabo reescrevendo-o usando o ADO.NET. O que estou fazendo de errado?

Esclarecimento: Esta questão não é sobre velocidade de processamento; respostas sobre como fazê-lo ir mais rápido não são relevantes.

foreach (int i=0; i<some_big_number; i++)
{
    using (myDC dc = new myDC())  // my DataContext
    {
        myRecord record = (from r in dc.myTable where r.Code == i select r).Single();

        // do some LINQ queries using various tables from the data context
        // and the fields from this 'record'.  i carefully avoid referencing
        // any other data context than 'dc' in here because I want any cached
        // records to get disposed of when 'dc' gets disposed at the end of 
        // each iteration.

        record.someField = newValueJustCalculatedAbove;
        dc.SubmitChanges();
    }
}

questionAnswers(4)

yourAnswerToTheQuestion