F#查询与C#LINQ

Ric*_*odd 5 f#

与C#相比,这个问题更多地与F#的冗长和清晰度有关.一个相对较小的问题,但是我写的数据库查询越来越烦人.

在C#中,我可以使用LINQ和Entity Framework执行以下操作:

 var q = (from row in db.LAYERS
          where row.LIST1.Field1 == PARAM
          select new MyClass( row.field1, row.field2, row.field3, row.field4)).ToList()
Run Code Online (Sandbox Code Playgroud)

关键在于我只是在查询本身内构建一个新的类列表.而在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)
Run Code Online (Sandbox Code Playgroud)

F#要求我在查询序列上做一个映射来获取我想要的列表.

Mis*_*hor 5

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

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