LINQ for F#

fmms 12年前發布 | 9K 次閱讀 LINQ

作者 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 年代的語言,如 dBasePowerBuilder

另一個在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#

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!