Best Answer
много трудно се проследява такъв код, много оптимизации могат да се направят,
първо хубаво е всяка операция да си я извадиш в отделен метод
другото е, че ако ползваш LINQ ще си спестиш малко повече от половината неща които си написал
прилагам ти едно решение 100/100, разгледай го и питай ако искаш за допълнителни обяснения
Благодаря