[英]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
. 我需要获取按
field1
和field2
分组的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.