如何使用查询表达式正确 return 一系列 类?
How do I correctly return a sequence of classes with the query expression?
我是 F# 的新手,在翻译一些 C# 代码时遇到了问题。
我有一个 class 类似于:
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: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))
相反(抱歉 - 现在不能真正尝试)
我是 F# 的新手,在翻译一些 C# 代码时遇到了问题。 我有一个 class 类似于:
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: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))
相反(抱歉 - 现在不能真正尝试)