请问关于c的具体应用场景有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计626个文字,预计阅读时间需要3分钟。
要使用LINQ计算多个IEnumerables的平均值,我们可以使用`Average()`方法。以下是如何实现这一点的步骤:
1. 定义一个`IEnumerable[]`数组,包含多个`IEnumerable`元素。
2.使用`Average()`方法遍历这些元素并计算平均值。
下面是代码示例:
csharp
using System;using System.Linq;public class Program{ public static void Main() { // 定义多个IEnumerables var multipleEnumerables=new[] { new[] { 10, 20, 30 }, new[] { 11, 21, 31 }, new[] { 12, 22, 32 }, new[] { 13, 23, 33 } };
// 计算平均值 double average=multipleEnumerables.Average(e=> e.Average());
// 输出结果 Console.WriteLine($平均值是:{average}); }}
这段代码首先定义了一个包含四个`IEnumerables`的数组,每个数组都包含三个整数。然后,使用`Average()`方法先计算每个数组的平均值,再计算这些平均值的平均值。最后,输出计算得到的平均值。
假设我们有多个相同项目计数的IEnumeblesvar 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())(但基于您的评论,我认为情况并非如此).
>使用.SelectMany将列表展平为包含项目的对象及其子数组索引(因此10和11将具有索引0等).
>按指数分组.
>使用.Select从每个分组中选择平均值.
Try it online
Try it online with question data
原始答案
您可以使用.Zip组合两个列表并计算平均值:
var averages = items1 .Zip(items2, (a, b) => (a+b)/2.0) .ToArray();
Try it online
本文共计626个文字,预计阅读时间需要3分钟。
要使用LINQ计算多个IEnumerables的平均值,我们可以使用`Average()`方法。以下是如何实现这一点的步骤:
1. 定义一个`IEnumerable[]`数组,包含多个`IEnumerable`元素。
2.使用`Average()`方法遍历这些元素并计算平均值。
下面是代码示例:
csharp
using System;using System.Linq;public class Program{ public static void Main() { // 定义多个IEnumerables var multipleEnumerables=new[] { new[] { 10, 20, 30 }, new[] { 11, 21, 31 }, new[] { 12, 22, 32 }, new[] { 13, 23, 33 } };
// 计算平均值 double average=multipleEnumerables.Average(e=> e.Average());
// 输出结果 Console.WriteLine($平均值是:{average}); }}
这段代码首先定义了一个包含四个`IEnumerables`的数组,每个数组都包含三个整数。然后,使用`Average()`方法先计算每个数组的平均值,再计算这些平均值的平均值。最后,输出计算得到的平均值。
假设我们有多个相同项目计数的IEnumeblesvar 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())(但基于您的评论,我认为情况并非如此).
>使用.SelectMany将列表展平为包含项目的对象及其子数组索引(因此10和11将具有索引0等).
>按指数分组.
>使用.Select从每个分组中选择平均值.
Try it online
Try it online with question data
原始答案
您可以使用.Zip组合两个列表并计算平均值:
var averages = items1 .Zip(items2, (a, b) => (a+b)/2.0) .ToArray();
Try it online

