Всем Здравствуйте, давно я не появлялся. Насчет обычных циклов и LINQ - не согласен,обычные циклы читаются лучше только если Linq совсем не владеешь, во всех остальных случаях - он всегда более читабельней. Сложную обработку через цикл невозможно сделать читабельной (если только не писать у каждой строки, что тут делается, или смотреть через отладчик). Мне "по наследству" досталась огроменная система автоматизации написанная на C# несколькими независимыми людьми в разное время - там кто во что горазд - каждый писал как умел (там на "одном экране" я встречал "перемешанные" for i++.., foreach, linq, select к "датасету" и вызов sql процедуры которая через несколько вложенных "вьюшек" смотрит на те-же данные - пример не придуманный - у меня от него глаза на лоб полезли). В цикле "видно" только совсем простые обработки (типа "взять все и поделить"), остальное можно разобрать только через отладчик - и то даже не разобрать а увидеть что произойдет с входящими данными при таких-то изначальных условиях (с неведомым изначально набором переменных). Через linq запрос любой сложности раскрывается в читабельный вид.
Ну а я сам все так-же грешу F#'ом - там работа с коллекциями (генерация, преобразования, свертка, фильтрация, "перерождение" в другой тип коллекции - на чрезвычайно качественном уровне) - и foreach для меня это "мозоль" (про for я вообще молчу), даже если мне надо просто вытащить данные из "кривонаписанного" класса который не поддерживает вообще ничего - я в любом случае вначале переведу их в колекию подходящего типа и только потом буду с ними работать.