5

この質問は、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()

ポイントは、クエリ自体の内部でクラスの新しいリストを作成しているだけです。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# では、必要なリストを取得するために、クエリ シーケンスでマップを実行する必要があります。

4

1 に答える 1