查询结果到F#中的新表对象

时间:2014-04-03 19:24:17

标签: f# dataframe

简短的问题。

我刚刚在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)

我现在想要计算所有组中的标准偏差,但我注意到我无法在查询中执行此计算。这是我希望查询结果可供使用的地方。

谢谢!

2 个答案:

答案 0 :(得分:2)

由于IQueryable继承自IEnumerable,您可以使用Seq模块中的函数,例如toListtoArray

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
相关问题