15

我正在尝试使用 F# 构造针对数据库的查询,但我什至无法编译最简单的查询。

我可以像这样构造一个 C# 查询:

from c in Categories
select c

一切正常。但是,当我尝试在 F# 中做同样的事情时:

query { for c in Categories do
        select c }

我收到以下错误:

类型名称和/或对象构造函数的使用无效。如有必要,使用“new”并将构造函数应用于其参数,例如“ new Type(args)”。所需的签名是: Categories() : unit

LINQPad 捆绑了许多示例,但没有一个 F# 示例真正展示了如何使用它来查询数据库。我也浏览了互联网,但找不到任何使用 F# 在 LINQPad 中查询数据库的示例。我在这里想念什么?

4

2 回答 2

14

出于好奇,我决定尝试在 LinqPad 中使用 F#。我能够通过选择“F# 程序”而不是 F# 表达式来使其工作。我确信只使用一个表达式是可能的,但我对 F# 100% 不熟悉,所以我做了足够多的工作来获得一个工作示例。选择这个选项给了我一行:

let dc = new TypedDataContext()

从那里,我按照这个示例页面让这个查询工作/执行:

let dc = new TypedDataContext()

let query1 = query { for c in dc.MyTable do
                     select c }

query1
|> Seq.iter (fun x -> printfn "SomeField: %s" x.SomeField)
于 2013-10-15T17:08:28.230 回答
3

你只需要添加“这个”。如果您想在 LINQPad 中将其作为 F# 表达式运行,请在映射表的前面。

query { for c in this.Categories do
        select c }
于 2019-08-22T14:55:29.093 回答