我有一个IEnumerable<IEnumerable<CustomObject>>其中s 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} }
}
Run Code Online (Sandbox Code Playgroud)
我可以检索以下内容的最佳方法是什么IEnumerable<CustomObject>:
{ {1, 2}, {2, 2}, {3, 2}, {4, 2} }
即y每个元素的平均值.
性能需要合理,因此不能使用.ToList()或类似.我一直在用LINQ尝试各种各样的东西,但无济于事.
@Bort,@ Rawling,我已经测试了你的答案,@ Rawling的速度非常快.然而,@ Bort的答案更具可读性,所以我想我会暂时解决这个问题.请随时保持答案!
使用LINQ,您可以拼合出列表清单中有SelectMany,那么GroupByx和Select的平均值:
var averages = customObjectLists
.SelectMany(l => l)
.GroupBy(co => co.x)
.Select(g => new CustomObject { x => g.Key, y = g.Average(co => co.y) });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |