После фильтрации остаются 2, 2 и 4: сумма равна 8, количество элементов — 3, количество разных значений — 2. Повторы не удаляются самим Where.
Как посчитать Sum и Count после фильтрации чисел?
После фильтрации остаются 2, 2 и 4: сумма равна 8, количество элементов — 3, количество разных значений — 2. Повторы не удаляются самим Where.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В C# задано int[] values = {1, 2, 2, 4, 5}; и var selected = values.Where(x => x % 2 == 0);. Источник после этого не изменяется. Чему равны selected.Sum(), selected.Count() и selected.Distinct().Count()?
Ответ
После фильтрации остаются 2, 2 и 4: сумма равна 8, количество элементов — 3, количество разных значений — 2. Повторы не удаляются самим Where.
Where проверяет каждый элемент и сохраняет оба вхождения двойки. Sum складывает значения, Count считает строки последовательности, а Distinct меняет набор перед подсчётом. Здесь повторное перечисление безопасно, потому что источник — неизменяемый в рамках задачи массив. Для одноразового потока или источника с побочными эффектами такой вывод о повторных проходах автоматически переносить нельзя.