我是 F# 的新手,在进行简单的第一个查询时遇到了麻烦。我有一个数据集,我想根据代码(在数据中重复)对美元金额进行分组。然后,对于每个组,我想要每个组的美元金额的平均值(以及最终的标准差)。另外,我只想查看一个providerID,因此需要“where”子句。根据我的研究,我已经做到了这一点:
let dc = new TypedDataContext()
let query2 = query { for x in dc.MyData do
groupBy x.Code into g
where (x.ProviderId = "some number of type string")
let average = query { for n in g do
averageBy n.DollarAmt }
select (g.Key, average) }
System.Console.WriteLine(query2)
这样我得到一个编译错误,提示“命名空间或模块‘x’未定义。” 我不明白这一点,因为当我运行仅收集具有指定提供程序ID的数据的查询时,它没有提示这个“x”,并且对于这个更大的查询,我遵循与此“x”相同的格式。
有什么想法吗?预先感谢您。
最佳答案
来自@kvb的评论:在groupBy
之后,您只能访问组g
,而不能访问单个项目x
。尝试将 where
放在 groupBy
之前。
关于f# - F# 中的 GroupBy 和每个组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821519/