LINQ对的平均值

时间:2015-05-05 11:34:34

标签: linq

LINQ挑战:

我有一个有序的数字列表。假设{2,3,5,7,11}

我喜欢计算每个项目与下一个项目之间的平均值。 使用linq有什么简短的方法吗?

所以这种情况下的结果应该是:  {2.5,4,6,9}

1 个答案:

答案 0 :(得分: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