2011-01-24 6 views

答えて

8

現在のバージョンでは、LINQのF#サポートはC#ほど滑らかではありませんが、かなりうまく使用できます。私はF# Snippets Webを実装するときにF#+ LINQをSQLに使用し、F#を使用してほとんどすべてを書くことができました。あなたがC#で得られない素晴らしい機能さえあります。

基本的なクエリの構文を引用し、配列数式に基づいています。

let q = <@ seq { for c in db.Customers do 
        if c.Country = "UK" then yield c.Name } @> 

F#での素晴らしい事は、あなたがあなたのコードをリファクタリングする引用スプライシングを使用することができるということです。

let ukCustomers = 
    <@ seq { for c in db.Customers do 
      if c.Country = "OK" then yield c } @> 

// Select names of all UK customers 
let q = <@ seq { for c in %ukCustomers -> c.Name } 

についてF#サポートの制限:

  • (リンクされた質問に暗示されているように)更新に関する問題はないと思います。

  • おそらく現在のバージョンの最大の制限は、それが(forループの体内Seq.filterを使用して例えば)クエリのネストのための限られたサポートを有することであるが、場合には、実際には(PowerPackの次のバージョンで修正されるべきです

  • もしあなたが選択できるなら、LINQ to Entitiesの代わりにLINQ to SQLを使うことをお勧めします。 LINQ to Entitiesは不変型ではうまく動作しないので、F#レコードとF#タプルを簡単に返すことはできません。繰り返しますが、これは将来的には改善される可能性が高いです(私は最近、これについていくつかの作業を行い、F#PowerPackのソースで初期サポートを見つけることができます)。

関連する問題