You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LINQ分组内计算Yes占比:Average方法参数错误排查

LINQ GroupBy分组内计算Yes/No占比的编译错误解决

我希望在LINQ的GroupBy分组内计算Answer字段Yes/No的占比,尝试统计Yes和No的数量并将结果设为PercentYes,但编写的代码出现编译错误。

错误代码:

PercentYes = g.Average(g.Where(f => f.Answer == "Yes").Count(),g.Where(f => f.Answer == "No").Count())

错误信息:

编译错误 (第41行,第20列): 没有接受2个参数的方法'Average'重载

解决方法

问题核心是Average方法没有接受两个参数的重载,你需要计算Yes数量在分组总数量中的占比,而非直接传入两个计数参数给Average。

推荐两种写法:

  1. 直接计算Yes数量除以分组总数:
PercentYes = (double)g.Count(f => f.Answer == "Yes") / g.Count()

这里强制转成double是为了避免整数除法导致结果仅为0或1。

  1. 更高效的单遍历写法:
PercentYes = g.Average(f => f.Answer == "Yes" ? 1.0 : 0.0)

这种方式只需要遍历分组一次,将Yes元素标记为1.0,No标记为0.0,求平均值就是Yes的占比,性能更优。

内容的提问来源于stack exchange,提问作者Jefferson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:06:24