Варианты реализации суммирования, усреднения, объединения и т. Д. Элементов в IEnumerable
-
19-08-2019 - |
Вопрос
Я ищу кратчайший код для создания методов для выполнения общих операций над элементами в IEnumerable.
Например:
public interface IPupil
{
string Name { get; set; }
int Age { get; set; }
}
<Ол>
Меня интересуют различные подходы к решению этих примеров: foreach (длинная рука), делегаты, LINQ, анонимные методы и т. д.
Извините за плохую формулировку, у меня возникают проблемы с описанием именно того, что я хочу!
Решение
Суммирование и усреднение: легко с LINQ:
var sum = pupils.Sum(pupil => pupil.Age);
var average = pupils.Average(pupil => pupil.Age);
Построение строки CSV - здесь есть различные варианты, включая написание собственных методов расширения. Это будет работать, хотя:
var csv = string.Join(",", pupils.Select(pupil => pupil.Name).ToArray());
Обратите внимание, что сложно вычислить несколько вещей (например, среднюю и сумму) за один проход по данным с помощью обычного LINQ. Если вы заинтересованы в этом, посмотрите на Проект Push LINQ , который мы с Марком Гравеллом написали. Это довольно специализированное требование.