1. Глобальная переменная public void GoodsInShop(string shop) { for (int i = 0; i < Products.Length; i++) { if (Products[i].ShopName == shop) { IsThereShop = true; Console.WriteLine(Products[i].GoodsName); } } if (IsThereShop == false) { throw new MyException($"the shop with the name {shop } does not exist"); } IsThereShop = false; } 2. Многие пишут код просто в Main. Это не соответствует принципам ООП. Завязывайте с этим, а то и глобальные переменные там. И сортировка через два цикла for. 3. Слишком хитро и не рекурсивно -> foreach (var file in Directory.GetFiles(folderPath, fileName, SearchOption.AllDirectories)) 4. просто цикл -> if (value != massProduct[0].shop && value != massProduct[1].shop && value != massProduct[2].shop && value != massProduct[3].shop && value != massProduct[4].shop) 5. Попадаются одинаковые домашки. Сам решаю, кто у кого списал, и выставляю оценки. 6. чтобы нормально считать производительность, нужно использовать Release mode и запускать через Ctrl+F5. Чтобы использовать все оптимизации.