I will assume that you have a good reason to be iterating over the list 500,000 times.
Depending on the work you are doing each iteration, you might be able to benifit from some parallization of the work load. Take a look at the TPL, you can use Parallel.ForEach to break the work into tasks that can be run concurrently. This way you can take advantage of more powerful hardware with more CPU cores.
Of course if you can do more of the work in fewer iterations you might also gain some performance, however without actually knowing what you are doing the only advice that can be offered are highlevel ideas without any bases on the actual problem domain.