bool TestForSquares(IEnumerable<int> numbers, IEnumerable<int> squares) => numbers.Count == squares.Count && numbers.Select(x=>x*x).All(x=>squares.Contains(x));
Для человека нет ничего невозможного.
Нет страшнее человека, который игнорирует точность в математике. Из-за таких вот людей и разбиваются самолёты, ракеты и шаттлы.
Малейшая погрешность в расчётах может стоить жизни многим людям.
Тогда опять редактируйте вопрос. Сейчас задача на множества, а не на пары
numbers[i]==sqrt(squares[i])
. Linq сам по себе выделяет много чего лишнего и медленно работает. Мой вариант оптимален только по количеству нажатий клавиатуры.