LINQ如何平均内部列表

LINQ如何平均内部列表,linq,Linq,对于下面的平均需求,LINQ语法是什么。Select和SelectMany都让我失望。 我可以在内部列表中使用Max()和Sum(),但Average()无法编译 简单列表的JSON版本如下所示 [{"Week":6, "Matches":[{"Game":189},{"Game":149},{"Game":132}]} .... var hiGame = games.Max(g => g.Matches.Max(m => m.Game)); // ok var hiSeries

对于下面的平均需求,LINQ语法是什么。Select和SelectMany都让我失望。 我可以在内部列表中使用Max()和Sum(),但Average()无法编译

简单列表的JSON版本如下所示

[{"Week":6, "Matches":[{"Game":189},{"Game":149},{"Game":132}]} ....

var hiGame = games.Max(g => g.Matches.Max(m => m.Game)); // ok
var hiSeries = games.Max(g => g.Matches.Sum(m => m.Game)); // ok
var ave = games.Average(g => g.Matches.SelectMany(m => m.Game)); // no go

无法从用法推断方法“System.Linq.Enumerable.SelectMany(System.Collections.Generic.IEnumerable,System.Func>)”的类型参数。尝试显式指定类型参数。

我想您希望在外部选择多个

var ave = games.SelectMany(g => g.Matches) // Flatten to a sequence of matches
               .Average(m => m.Game);      // Average by value of Game

我想你希望你的
选择多个
在外面:

var ave = games.SelectMany(g => g.Matches) // Flatten to a sequence of matches
               .Average(m => m.Game);      // Average by value of Game