简短的问题。
我刚刚在F#中进行了第一次成功的查询。我现在希望能够参考结果并对其执行各种计算。如果我只是将查询分配给一个对象," newData,"它不允许我引用这个新数据表的元素(例如newData.Billed_Amount)。
是否有类似ToList()的快速功能,以便我可以处理这些新数据?
以下是一些示例代码:
let dc = new TypedDataContext()
let newData = query { for x in dc.MyData do
where (x.ID = "number of type string")
groupBy x.Code into g
let average = query { for x in g do
averageBy x.Billed_Amt }
select (g, average) }
System.Console.WriteLine(newData)
我现在想要计算所有组中的标准偏差,但我注意到我无法在查询中执行此计算。这是我希望查询结果可供使用的地方。
谢谢!
答案 0 :(得分:2)
由于IQueryable
继承自IEnumerable
,您可以使用Seq
模块中的函数,例如toList
和toArray
。
open System.Linq //for AsQueryable extension method
let q s =
query {
for x in s do
where (x > 1)
select x
}
q ([1; 2].AsQueryable()) |> Seq.toList //[2]
答案 1 :(得分:2)
这样做:
newData |> Seq.toList
管道操作符|>
将右侧的函数应用于左侧的值。如果您希望它成为一个列表,您可以将其放入newData
:
let newData = query { for x in dc.MyData do
...
select (g, average) }
|> Seq.toList