gpt4 book ai didi

c# - 在 LINQ 中获取多个集合的平均值

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

我有一个集合集合,所有的子集合都有相同数量的元素。父集合除了保存子集合外什么都不做。

[0] [Child_0] [ID: 1]
[0] [Child_0] [Amount: 4]
[0] [Child_1] [ID: 2]
[0] [Child_1] [Amount: 7]
[1] [Child_0] [ID: 1]
[1] [Child_0] [Amount: 2]
[1] [Child_1] [ID: 2]
[1] [Child_1] [Amount: 4]
[2] [Child_0] [ID: 1]
[2] [Child_0] [Amount: 5]
[2] [Child_1] [ID: 2]
[2] [Child_1] [Amount: 3]

对于我的输出,我不关心父集合。我只想要一个匿名类型的 ID 和平均金额,所以对于上面的内容,它将是

ID     Avg
1 3.66
2 4.66

响应的语言无关紧要。

谢谢。

最佳答案

这听起来像一个简单的 selectmany、group 和 average 就可以完成这项工作;这里我使用匿名类型和数组纯粹是为了方便打字......

        // the data
var outer = new[] {
new[] {
new {ID=1,Amount=4}, // [0] [Child_0] [ID: 1, Amount: 4]
new {ID=2,Amount=7} // [0] [Child_1] [ID: 2, Amount: 7]
},
new[] {
new {ID=1, Amount=2}, // [1] [Child_0] [ID: 1, Amount: 2]
new {ID=2, Amount=4} // [1] [Child_1] [ID: 2, Amount: 4]
},
new[] {
new {ID=1, Amount=5}, // [2] [Child_0] [ID: 1, Amount: 5]
new {ID=2, Amount=3} // [2] [Child_1] [ID: 2, Amount: 3]
}
};
var qry = from x in outer
from y in x
group y by y.ID into grp
select new { Id = grp.Key, Avg = grp.Average(z => z.Amount) };

foreach (var item in qry)
{
Console.WriteLine("{0}: {1}", item.Id, item.Avg);
}

关于c# - 在 LINQ 中获取多个集合的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/318552/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com