Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为anonymous提供一个名称,稍后在LINQ中调用_C#_Linq - Fatal编程技术网

C# 为anonymous提供一个名称,稍后在LINQ中调用

C# 为anonymous提供一个名称,稍后在LINQ中调用,c#,linq,C#,Linq,我有一个int[]数组={34,65,3,65,3,2,68,8,4,2}。我想把这个数组分成5个一组,然后找出每个子组的平均值。这个语法(隐式地)声明了一个数组,该数组的类型是由Avg()方法返回的: new [] { Avrg = g.Avg() } // if g.Avg() returns int, it will be int[] 如果要声明匿名类型的数组,必须执行以下操作: new[] { new { Avrg = g.Avg() } } 编辑: 根据您的编辑,此代码将数组分成

我有一个int[]数组={34,65,3,65,3,2,68,8,4,2}。我想把这个数组分成5个一组,然后找出每个子组的平均值。

这个语法(隐式地)声明了一个数组,该数组的类型是由
Avg()
方法返回的:

new [] { Avrg = g.Avg() }  // if g.Avg() returns int, it will be int[]
如果要声明匿名类型的数组,必须执行以下操作:

new[] { new { Avrg = g.Avg() } }
编辑:

根据您的编辑,此代码将数组分成5个元素的组,并计算它们的平均值:

int[] array = { 34, 65, 3, 65, 3, 2, 68, 8, 4, 2 };

var avgGroups = from x in Enumerable.Range(0, array.Length)
                group x by (x / 5) into g
                select new { Avrg = g.Average(x => array[x]) };
此语法(隐式)声明
Avg()
方法返回的类型的数组:

new [] { Avrg = g.Avg() }  // if g.Avg() returns int, it will be int[]
如果要声明匿名类型的数组,必须执行以下操作:

new[] { new { Avrg = g.Avg() } }
编辑:

根据您的编辑,此代码将数组分成5个元素的组,并计算它们的平均值:

int[] array = { 34, 65, 3, 65, 3, 2, 68, 8, 4, 2 };

var avgGroups = from x in Enumerable.Range(0, array.Length)
                group x by (x / 5) into g
                select new { Avrg = g.Average(x => array[x]) };

你不需要给它起个名字;您正在创建的对象的类型为

 IEnumerable<typeof(g.Avg)>
IEnumerable

因此,您可以通过该对象进行枚举以获得g.Avg()的值。

您不需要给它命名;您正在创建的对象的类型为

 IEnumerable<typeof(g.Avg)>
IEnumerable

因此,您可以通过该对象进行枚举以获得g.Avg()的值。

您可能希望将类型存储在数组中。为了这个你需要像这样

    var v = from xyz in new [] { new {Avg =  g.Avg()} }
                select xyz;
而是这样,

    var v = from xyz in new [] {   g.Avg() }
                select new {Avg = xyz};

可能您想在数组中存储类型。为了这个你需要像这样

    var v = from xyz in new [] { new {Avg =  g.Avg()} }
                select xyz;
而是这样,

    var v = from xyz in new [] {   g.Avg() }
                select new {Avg = xyz};

代码的其余部分是什么样子的?在from行之前给g.Avg()一个名称,这样var Avrg=g.Avg();从新[]{Avrg}中的xyz选择xyz;你想做什么还不清楚。请进一步解释。如果它没有编译,这表明它涉及到编译器错误-所以请包括这一点。您还没有提到什么是
g
,或者您试图将此查询分配给什么。基本上,提供更多的上下文。请阅读谢谢大家。我已经更新了我的问题,剩下的代码是什么样子的?在from行之前给g.Avg()一个名称,这样var Avrg=g.Avg()怎么样;从新[]{Avrg}中的xyz选择xyz;你想做什么还不清楚。请进一步解释。如果它没有编译,这表明它涉及到编译器错误-所以请包括这一点。您还没有提到什么是
g
,或者您试图将此查询分配给什么。基本上,提供更多的上下文。请阅读谢谢大家。我已经更新了我的问题