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

时间:2018-01-16 14:33:08

标签: c# linq group-by

我需要计算相当复杂的可膨胀数据结构的平均值。

我有var table1Sum来自两个数据表。另一个var table2Sum也从两个数据表连接起来。这两个表连接到第三个表中。

我需要将field3的平均值分组为field1field2,但在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查询的select new部分中稍后计算平均值。

(所有值的正常平均值与let averageWithZeros = dg.Average(g => g.field3)相符。)

有人可以用正确的语法帮助我吗?

1 个答案:

答案 0 :(得分:2)

您需要在过滤器后平均字段3

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