F#查询vs C#LINQ

F#查询vs C#LINQ,f#,F#,这个问题更多地涉及到F与C相比似乎冗长而不清晰的部分。这是一个相对较小的问题,但随着我编写的数据库查询越来越多,这个问题变得越来越烦人 在C#中,我可以使用LINQ和实体框架执行以下操作: var q=(来自db.LAYERS中的行 其中row.LIST1.Field1==PARAM 选择新的MyClass(row.field1、row.field2、row.field3、row.field4)).ToList() 关键是,我只是在查询本身内部构建一个新的类列表。 而在F#中,这似乎不起作用,

这个问题更多地涉及到F与C相比似乎冗长而不清晰的部分。这是一个相对较小的问题,但随着我编写的数据库查询越来越多,这个问题变得越来越烦人

在C#中,我可以使用LINQ和实体框架执行以下操作:

var q=(来自db.LAYERS中的行
其中row.LIST1.Field1==PARAM
选择新的MyClass(row.field1、row.field2、row.field3、row.field4)).ToList()
关键是,我只是在查询本身内部构建一个新的类列表。 而在F#中,这似乎不起作用,为了得到同样的结果,我做了如下工作:

    query { for row in db.LAYERS do 
        where (row.LIST1.Field1 = PARAM)
        select row.field1, row.field2, row.field3, row.field4 } 
        |> Seq.map (fun row -> new MyClass(row.field1, row.field2, row.field3, row.field4)

F#要求我对查询序列进行映射以获得我想要的列表。

虽然您没有提供无法编译的代码,但我猜您只需要将对象创建表达式放在括号中:

query { for row in db.LAYERS do 
        where (row.LIST1.Field1 = PARAM)
        select (new MyClass(row.field1, row.field2, row.field3, row.field4)) }