与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#要求我在查询序列上做一个映射来获取我想要的列表.
虽然你没有提供无法编译的代码,但我猜你只需要将对象创建表达式放在括号中:
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)
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |