LINQ for F#
作者 Jonathan Allen 譯者 李永倫
F# 3.0 包含在 Visual Studio 11 beta 里,支持使用 LINQ 表達式。
F#總是可以訪問底層的庫,這使得 LINQ 成為可能,但F# 3卻是第一個在語法上提供實際支持的版本。就像 Visual Basic,F#的 LINQ 直接在查詢里支持聚合函數,如 count、sum、first 和 last。此外,F#也和 VB 一樣不需要末尾的“select”子句。所有查詢都要放在以“query {”開始,并以匹配的“}”結束的表達式里。
LINQ 或語言集成查詢是一種類似 SQL 的語法,最初是為Cω這個實驗語言開發的,最終卻在 Visual Basic 和 C# 里發布。雖然很獨特,但概念上卻類似于 80 年代和 90 年代的語言,如 dBase 和 PowerBuilder。
另一個在F# 3 里發布的特性是類型提供程序。這個話題相對復雜,涉及到的東西可以看做代碼生成和動態類型之外的另一種選擇。若想了解更多,我們建議你看看 Joe Pamer 關于類型提供程序的視頻演講。F#自帶以下類型提供程序:
- OData 服務
- 數據庫鏈接,如 SQL
- 數據庫架構,如 LINQ to SQL 的 dbml 文件
- 實體數據模型格式(即 EDMX 架構文件)
- Web Service 的 WSDL 文檔
- 以 .resx 為擴展名的資源文件
類型提供程序的一個有趣特性是它們可以在設計時為 Visual Studio 的智能感知提供數據。這意味著會有一些時候代碼完成的提示顯示為“加載中”,而不是實際的屬性和方法。這個延遲取決于每個類型提供程序以及遠程服務器的響應速度。
F#還將支持可移植庫。可移植庫是無需單獨重新編譯就可以在 .NET、Silverlight、Windows Phone 和 XNA 上共享的 DLL。
最后,F# 3 通過“member val”關鍵字提供自動實現屬性。屬性需要在聲明的時候進行初始化,可變屬性需要添加“with get, set”后綴。
查看英文原文:LINQ for F#