2015-05-05 3 views
1

A LINQ challenge:LINQ среднее значение для пар

У меня есть упорядоченный список номеров. предположим {2, 3, 5, 7, 11}

Мне нравится рассчитать среднее значение между каждым элементом и следующим. Есть ли короткий способ сделать это с помощью linq?

так что результат в этом случае должно быть: {2,5, 4, 6, 9}

+0

возможно дубликат [LINQ для вычисления скользящего среднего SortedList ] (http://stackoverflow.com/questions/5166716/linq-to-calculate-a -moving-средняя-оф-а-sortedlistdatetime-двойной) – Rawling

ответ

3

Вы можете использовать Enumerable.Zip:

List<int> ints = new List<int> { 2, 3, 5, 7, 11 }; 
IEnumerable<double> averages = ints.Zip(ints.Skip(1), (i1, i2) => (i1 + i2)/2d); 

Это застегивает список с самим собой (начиная со второго элемент из-за Skip(1)).

Результат: 2.5 , 4.0, 6.0, 9.0

Смежные вопросы