Никто еще не указал, что ForEach приводит к проверке типа времени компиляции, когда ключевое слово foreach проверяется во время выполнения.
После некоторого рефакторинга, в котором оба кода использовались в коде, я предпочитаю .ForEach, так как мне приходилось выслеживать сбои тестов / сбои времени выполнения, чтобы найти проблемы foreach.