<分区>
我有一个数据表,其中包含几列。 我想用 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()
当我计算 Sum 时,这非常有效,但平均值会产生第一个记录值,而不是所有记录的平均值。 我认为这是不必要的: .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()
但采用更简单、更清洁的方式。这会正确生成平均值。