LINQ for F#

fmms 13年前
     <p> 作者 <a href="/misc/goto?guid=4958331654026389041">Jonathan Allen</a> 译者 <a href="/misc/goto?guid=4958333435258997060">李永伦</a></p>    <p> F# 3.0 包含在 Visual Studio 11 beta 里,支持使用 LINQ 表达式。</p>    <p> F#总是可以访问底层的库,这使得 LINQ 成为可能,但<a href="/misc/goto?guid=4958333436058691359">F# 3</a>却是第一个在语法上提供实际支持的版本。就像 Visual Basic,<a href="/misc/goto?guid=4958333436862000704">F#的 LINQ</a> 直接在查询里支持聚合函数,如 count、sum、first 和 last。此外,F#也和 VB 一样不需要末尾的“select”子句。所有查询都要放在以“query {”开始,并以匹配的“}”结束的表达式里。</p>    <p> LINQ 或语言集成查询是一种类似 SQL 的语法,最初是为Cω这个实验语言开发的,最终却在 Visual Basic 和 C# 里发布。虽然很独特,但概念上却类似于 80 年代和 90 年代的语言,如 <a href="/misc/goto?guid=4958333437657708653">dBase</a> 和 <a href="/misc/goto?guid=4958333438458454328">PowerBuilder</a>。</p>    <p> 另一个在F# 3 里发布的特性是类型提供程序。这个话题相对复杂,涉及到的东西可以看做代码生成和动态类型之外的另一种选择。若想了解更多,我们建议你看看 <a href="/misc/goto?guid=4958333439245208665">Joe Pamer 关于类型提供程序的视频演讲</a>。<a href="/misc/goto?guid=4958333440040709973">F#自带以下类型提供程序</a>:</p>    <ul>     <li>OData 服务</li>     <li>数据库链接,如 SQL</li>     <li>数据库架构,如 LINQ to SQL 的 dbml 文件</li>     <li>实体数据模型格式(即 EDMX 架构文件)</li>     <li>Web Service 的 WSDL 文档</li>     <li>以 .resx 为扩展名的资源文件</li>    </ul>    <p> 类型提供程序的一个有趣特性是它们可以在设计时为 Visual Studio 的智能感知提供数据。这意味着会有一些时候代码完成的提示显示为“加载中”,而不是实际的属性和方法。这个延迟取决于每个类型提供程序以及远程服务器的响应速度。</p>    <p> F#还将支持<a href="/misc/goto?guid=4958333436058691359">可移植库</a>。可移植库是无需单独重新编译就可以在 .NET、Silverlight、Windows Phone 和 XNA 上共享的 DLL。</p>    <p> 最后,F# 3 通过“member val”关键字提供<a href="/misc/goto?guid=4958333441577345203">自动实现属性</a>。属性需要在声明的时候进行初始化,可变属性需要添加“with get, set”后缀。</p>    <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958333442374424868">LINQ for F#</a></p>