在LINQPad中编写F#查询

时间:2013-10-15 15:52:44

标签: c# linq f# linqpad

我正在尝试使用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数据库的例子。我在这里缺少什么?

2 个答案:

答案 0 :(得分:13)

出于好奇,我决定尝试在LinqPad中使用F#。通过选择“F#Program”而不是F#表达,我能够使它工作。我确信只使用一个表达式是可能的,但我对F#100%不熟悉,所以我做得足以得到一个有效的例子。选择此选项只给我一行:

let dc = new TypedDataContext()

从那里开始,我按照this示例页面进行操作/执行此查询:

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)

答案 1 :(得分:1)

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

 public function up()
{
    Schema::create('category_post', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('category_id');
        $table->integer('post_id');
        $table->timestamps();
    });
}