Disclaimer: Я не пишу на C# так что возможны ошибки, но идея простая, надо использовать
foreach
.
Эта функция вернёт
true если обе коллекции пусты.
public static bool TestForSquares(IEnumerable<int> numbers, IEnumerable<int> squares) {
var squaresEnumerator = squares.GetEnumerator();
foreach(int number in numbers) {
if(!squaresEnumerator.MoveNext()) {
// в squares закончились элементы, а в numbers ещё нет
return false;
}
if(number * number != squaresEnumerator.Current) {
return false;
}
}
if(squaresEnumerator.MoveNext()) {
// в squares ещё остались элементы, а в numbers уже всё закончилось
return false;
}
return true;
}