我有一个包含 IEnumerable<IEnumerable<CustomObject>>
的变量,其中的 CustomObject
包括 x
(它被用作关键字,在这个例子中是 1
、2
、3
)和一个 y
值。以下是一些虚假数据:
{
{ {1, 2}, {2, 4}, {3, 6}, {4, 8} },
{ {1, 2}, {2, 0}, {3, 0}, {4,-2} },
{ {1, 2}, {2, 2}, {3, 0}, {4, 0} }
}
以下是IEnumerable<CustomObject>的最佳检索方式:
{ {1, 2}, {2, 2}, {3, 2}, {4, 2} }
即每个元素的y值的平均值。
性能需要合理,因此不能使用.ToList()或类似的操作。我试过各种LINQ操作,但都无法实现。
更新
@Bort,@Rawling,我已经测试了你们的答案,@Rawling的答案稍微快一点。然而,@Bort的答案更易读,所以我想暂时采用那个。请继续提供答案!
GroupBy
不算作调用ToList()
吗?它确实会固定整个数据集。 - RawlingOutOfMemoryException
。仔细想一下,你会发现除非你知道输入中没有更多的元素进入该组,否则你不能跨组得到平均值 - 而你无法知道这一点,直到输入被耗尽,并且您需要在其他组中存储所有元素的地方。 - Rawling