c# – 计算具有相同项目计数的多个IEnumerable的平均值
发布时间:2020-12-16 01:27:47 所属栏目:百科 来源:网络整理
导读:假设我们有多个相同项目计数的IEnumebles var multipleEnumerables = new[]{ new[] { 10,20,30 } new[] { 11,21,31 } new[] { 12,22,32 } new[] { 13,23,33 }} 如何获得使用LINQ的平均值,这将产生以下结果: new[] { 11.5,21.5,31.5 } 可枚举的数量可以变化(
假设我们有多个相同项目计数的IEnumebles
var multipleEnumerables = new[] { new[] { 10,20,30 } new[] { 11,21,31 } new[] { 12,22,32 } new[] { 13,23,33 } } 如何获得使用LINQ的平均值,这将产生以下结果: new[] { 11.5,21.5,31.5 } 可枚举的数量可以变化(即,不固定为四). 每个可枚举项中的项数可能不同(即不固定为三个),但对于该特定实例的所有可用数据都是相同的. 解决方法
更新以响应编辑
如果你有IEnumerable< IEnumerable< Item>>你可以使用这样的东西: IEnumerable<IEnumerable<Test>> multipleEnumerables = new[] { new [] { new Test { Value = 10 },new Test { Value = 20 } },new [] { new Test { Value = 11 },new Test { Value = 21 } } }; var averages = multipleEnumerables .SelectMany(e => e.Select((v,i) => new { Index = i,Item = v })) .GroupBy(e => e.Index) .Select(e => e.Select(v => v.Item.Value).Average()) .ToArray(); 如果您有一个简单的IEnumerable< IEnumerable< int>>,请将.Select行更改为:.Select(e => e.Select(v => v.Item).Average())(但基于您的评论,我认为情况并非如此). >使用 Try it online Try it online with question data 原始答案 您可以使用 var averages = items1 .Zip(items2,(a,b) => (a+b)/2.0) .ToArray(); Try it online (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |