我有一个数据表,其中包含几列。我想用 linq 计算这些平均值,而不分组:我试过这个:
dtPointCollFb.GroupBy(r => 1).Select(r => new
{
Plus100 = r.Average(item => item.PLUS100),
Plus50 = r.Average(item => item.PLUS50),
Plus10 = r.Average(item => item.PLUS10),
Plus5 = r.Average(item => item.PLUS5),
Plus1 = r.Average(item => item.PLUS1),
NULLA = r.Average(item => item.NULLA)
}).ToList()
当我计算总和时,这非常有效,但平均产生第一个记录值,而不是所有记录的平均值。我认为这是不必要的: .GroupBy(r => 1) 因为我用常量分组。
但如果没有这个,我不能只对整个查询使用平均值,而且只能用于一列:
dtPointCollFb.Average(r => r.PLUS100)
那么有人可以提出一个简单的最佳实践解决方案吗?如果可以使用方法语法,而不是查询。
我想要这样的东西:
dtPointCollFb.GroupBy(r => 0).Select(r => new
{
Plus100 = r.Sum(item => item.PLUS100) / dtPointCollFb.Rows.Count,
Plus50 = r.Sum(item => item.PLUS50) / dtPointCollFb.Rows.Count,
Plus10 = r.Sum(item => item.PLUS10) / dtPointCollFb.Rows.Count,
Plus5 = r.Sum(item => item.PLUS5) / dtPointCollFb.Rows.Count,
Plus1 = r.Sum(item => item.PLUS1) / dtPointCollFb.Rows.Count,
NULLA = r.Sum(item => item.NULLA) / dtPointCollFb.Rows.Count
}).ToList()
但以更简单和更清洁的方式。这会正确产生平均值。