简体   繁体   English

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

[英]How to use linq to calculate average from grouped data where value > 0 using let

I need to calculate an average of pretty complicated structure of enuberable data. 我需要计算可枚举数据的相当复杂的结构的平均值。

I have var table1Sum that is joined from two datatables. 我有从两个数据表联接的var table1Sum Another var table2Sum is also joined from two datatables. 另一个var table2Sum也从两个数据表联接。 These two tables are joined into third table. 这两个表合并到第三表中。

I need to get average of field3 grouped by field1 and field2 but the average calculation should not take into count when field3 == 0.0 . 我需要获取按field1field2分组的field3平均值,但是当field3 == 0.0时,平均值计算不应考虑在内。

I tried 我试过了

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
             {
             .....
             };

but this is not correct syntax for calculating average. 但这不是计算平均值的正确语法。 I'm using let because I need calculated average later on in the select new part of my linq query. 我使用let是因为稍后需要在linq查询的select new部分中计算平均值。

(The normal average of all values goes well with let averageWithZeros = dg.Average(g => g.field3) .) let averageWithZeros = dg.Average(g => g.field3)可以很好地满足所有值的正常平均值。)

Could somebody help me with correct syntax? 有人可以用正确的语法帮助我吗?

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM