Visual Studio 11 betaに含まれているF# 3.0は、LINQ式を使えるようになった。
F#は、これまでもLINQできる基盤ライブラリにアクセスしてきたが、F# 3 がLINQシンタックスが実際にサポートされる最初のバージョンとなった。 Visual Basicのように、F#のLINQはクエリの中で直接 count, sum, first, lastのような集約関数をサポートする。またVBのように、F#は終りに“select” 句を必要としない。その代わりに、全てのクエリは“query {“で始まり、対応した中括弧で終わる式の中にある必要がある。
LINQ すなわち Language Integrated Query(言語に統合されたクエリ)は、SQLのようなシンタックスで元々研究言語 Cω 用に開発され、最終的にVisual Basic と C#となってリリースされた。違うものであるが、概念的には80年、90年台の言語、例えば dBase や PowerBuilderに似ている。
F# 3でリリースされたもう1つのフィーチャがType Providerである。これはかなり込み入ったトピックで、コード生成と動的型付けの両方に替わるものとして考えることができる。更に知りたければ Joe Pamer氏の Type Providersに関するプレゼンを見て欲しい。特に何もせずに、F#は以下のもののtype providerを持っている。
- OData サービス
- SQLのようなデータベース コネクション
- LINQ to SQLのdbmlファイルのようなデータベーススキーマ
- Entity Data Modelフォーマット(すなわちEDMXスキーマファイル)
- WSDLフォーマットのwebサービス
- .resx拡張子を持つリソースファイル
type providerの面白いフィーチャは、デザイン時に type providerをVisual Studioの IntelliSenseに入れられることである。すなわちコード補完ヒントが実際のプロパティやメソッドを見せる代わりに「ロード中」と表示する時がある、ということである。遅れは、特定の type providerと遠方にあるサーバーの反応具合に依存する。
F#にはまた、ポータブルライブラリ(Portable Library)のサポートも入っている。これは、別バージョンの再コンパイル無しで、 .NET, Silverlight, Windows Phone, そして、あるいはXNA 間で共有できるDLLである。
最後に、F# 3は“member val”キーワードを介して、自動実装プロパティを提供する。プロパティは、宣言の一部として初期化される必要があり、ミュータブルプロパティは、get, set サフィックスが必要である。