gpt4 book ai didi

c# - IEnumerable> 中一个属性的平均值的 IEnumerable,其中 T 有两个属性

转载 作者:行者123 更新时间:2023-11-30 14:35:35 27 4
gpt4 key购买 nike

我有一个 IEnumerable<IEnumerable<CustomObject>> CustomObject在哪里有一个 x (用作键(在本例中为 123 ))和 y值(value)。一些假数据:

{
{ {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 的回答更具可读性,所以我想我暂时会接受它。请随时提供答案!

最佳答案

使用 LINQ,您可以使用 SelectMany 展开列表列表,然后使用 GroupBy x 和 Select 平均:

var averages = customObjectLists
.SelectMany(l => l)
.GroupBy(co => co.x)
.Select(g => new CustomObject { x => g.Key, y = g.Average(co => co.y) });

关于c# - IEnumerable<IEnumerable<T>> 中一个属性的平均值的 IEnumerable,其中 T 有两个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884017/

27 4 0