C# 如何使用linq计算分组数据的平均值,其中值>;0使用let

C# 如何使用linq计算分组数据的平均值,其中值>;0使用let,c#,linq,group-by,C#,Linq,Group By,我需要计算一个相当复杂的不可测数据结构的平均值 我有var table1Sum,它由两个数据表连接而成。另一个var table2Sum也从两个数据表中连接起来。这两个表被合并到第三个表中 我需要获得按field1和field2分组的field3的平均值,但当field3==0.0时,平均值计算不应计入在内 我试过了 var table3 = from d in table1sum.Concat(table2sum) group d by new { d.field1,

我需要计算一个相当复杂的不可测数据结构的平均值

我有
var table1Sum
,它由两个数据表连接而成。另一个
var table2Sum
也从两个数据表中连接起来。这两个表被合并到第三个表中

我需要获得按
field1
field2
分组的
field3
的平均值,但当
field3==0.0
时,平均值计算不应计入在内

我试过了

var table3 = from d in table1sum.Concat(table2sum)
             group d by new { d.field1, d.field2 } into dg
             let field3Average = dg.Where(g => g.field3 > 0.0).Average()
             select new
             {
             .....
             };
但这不是计算平均值的正确语法。我正在使用
let
,因为我以后需要在我的linq查询的
selectnew
部分中计算平均值

(所有值的正常平均值与
let averageWithZeros=dg.average(g=>g.field3)
一致)


有人能帮我纠正语法吗?

您需要在筛选后对字段3求平均值

 let field3Average = dg.Where(g => g.field3 > 0.0).Average(g => g.field3)

您需要在平均值之前选择筛选后的字段3