如何使用查询表达式正确返回一系列类?

时间:2015-09-08 20:27:07

标签: f# c#-to-f#

我是F#的新手并且无法翻译某些C#代码。 我有一个类似的类:

type car () =
    member val Model = "" with get,set
    member val Year = "" with get,set

我有这个查询表达式从数据库中提取汽车数据:

query{
    for row in db do
    select // <-- what is the correct syntax to create a sequence of new car 
           //    classes here
}

1 个答案:

答案 0 :(得分:2)

如果你不翻译1:1或至少如果你添加一个构造函数,那就容易多了。

例如,使用主构造函数,这应该有效:

type Car (model, year) =
   member __.Model with get() = model
   member __.Year with get() = year

query {
   for row in db do
   select (Car (row.Model, row.Year))
}

现在当然我不知道db中的行是怎么样的,这会给你不可变的数据 - 但是对于我看来它应该没问题

我刚刚意识到这可能是一个问题(就像在C#中一样)因为ctor可能无法翻译成SQL语句 - 你仍然可以尝试,但我猜你真的需要做

query {
   for row in db do
   select 
} |> Seq.map (fun row -> Car (row.Model, row.Year))

相反(抱歉 - 现在不能真正尝试)