我有一个数据表,我按如下方式分组:
var result = from data in view.AsEnumerable()
group data by new {Group = data.Field<string>("group_no")}
into grp
select new
{
Group = grp.Key.Group,
PRAS = grp.Average(c => Convert.ToDouble(c.Field<string>("pAKT Total")))
};
现在,平均函数还计算其计算中的空单元格。例如,有10个单元格,只有5个填充了值。我希望平均值是5个值除以5的总和。
我如何确保它符合我的要求?
感谢。
答案 0 :(得分:6)
也许是这样的:
PRAS = grp.Select(row => row.Field<string>("pAKT Total"))
.Where(s => !String.IsNullOrEmpty(s))
.Select(Convert.ToDouble)
.Average()
答案 1 :(得分:0)
据我所知,使用Average方法是不可能的 但是,您可以使用以下替代方法获得您想要的结果:
PRAS = grp.Sum(c => Convert.ToDouble(c.Field<string>("pAKT Total"))) / grp.Count(c => !c.IsDBNull)
这只是有意义的,当你想选择&#34;空&#34;组中的行,但不想将它们包含在您的平均值中。如果你不需要&#34;空&#34;行,根本不要选择它们,即添加一个排除它们的where子句。