网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VB > 正文

Visual Basic 9 不完全入门之LINQ进阶

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/07/10

本文主要为广大网友提供“Visual Basic 9 不完全入门之LINQ进阶”,希望对需要Visual Basic 9 不完全入门之LINQ进阶网友有所帮助,学习一下!

  这一篇随笔,则将以更复杂的示例,展示 Linq 的灵活性与扩展性,以至于探索 Linq 的工作原理与进阶应用。

  Linq 的不足

  .Net Framework 3.5 Beta 1 中,LINQ 的应用还存在一定限制,例如不支持 Group By,Having,以及 Join 语法。并且,它或多或少还存在一些 Bug,因此不建议用于需要高稳定性的环境中。当然,相信在最终发布版本中,它的能力将大大提高,毕竟这是 .Net Framework 3.5 中最重要的一项新增功能。

  关于匿名类型

  实际上,Visual Basic 9 & C# 3.0 中,都已经完成了对匿名类型的支持。例如:

  Visual Basic 9 匿名类型示例

Dim Person = New With {.Name = "John Chen", .Age = 13}

Console.WriteLine("Name:" & Person.Name)

Console.WriteLine("Age:" & Person.Age)

  这是为 Linq 而预备的一项极为有益的语法特性,虽然它也是编译时行为。当它应用在 Linq 中时,可以使用 Select 语句,隐式创建一组匿名类型对象。

  注意:Linq 中,Select 语句后置,这是为了 IDE 中智能感知的需要。

  匿名类型做了什么?

  Person 的匿名类型生成代码

Public Class _ClosureClass _Closure Visual Basic 9 不完全入门之LINQ进阶_网学
当前位置: 网学 > 编程文档 > VB > 正文

Visual Basic 9 不完全入门之LINQ进阶

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/07/10
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
_10

'' Methods

_

Public Sub New()Sub New()

_

Public Sub New()Sub New(ByVal other As _Closure Visual Basic 9 不完全入门之LINQ进阶_网学

当前位置: 网学 > 编程文档 > VB > 正文

Visual Basic 9 不完全入门之LINQ进阶

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/07/10
content
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号
_10)

'' Fields

Public $VB$Local_Name As String

Public $VB$Local_Age As Integer

End Class

  实际上,它在编译时生成了一个 Closure 类型,封装这个看似动态的匿名类型。不过,Dynamic Interface(动态接口)已经被取消了。

  Linq 又做了什么?

  首先必须了解,Linq 实际上是一种编译时行为。编译器将 Linq 表达式转换为晦涩难懂的嵌套调用,以保持与 .Net 2.0 兼容。IQueryable 就应运而生,提供了大批查询函数,便于进行嵌套调用;扩展方法也得以大展身手,使 .Net 2.0 原有的集合类型支持 Linq 的语法特性。因此,不要担心 Linq 带来的兼容性问题。

  Linq 中的排序

  当然,您可以使用 IEnumerable(Of T) 中的 Orderby 函数,但是我非常不建议那么做。您可以使用完全像 T-SQL 一样的语法:

Dim Data As String() = {"a", "b", "d", "c"}

Dim Query = From O In Data Order By O Descending ''这就是核心

''输出信息

For Each QItem In Query

Console.WriteLine(QItem)

Next

  Linq 中的跨数组查询

  目前的 Visual Basic 9 Beta 1 中还不支持在查询语句中使用 Join, Union 等高级类 SQL 功能,因此只能用极端复杂的办法,就是直接调用 IEnumerable(Of T) 中的 Union,Order By 函数。但是,您还是可以通过一些变通手法,达到需要的功能。例如:

  Linq 中的跨数组查询示例

Dim CLRLanguage() As String = {"Visual Basic", "C#", "J#", "C++/CLI"}

Dim CLRCount() As KeyValuePair(Of String, Integer) = {New KeyValuePair(Of String, Integer)("Visual Basic", 1000000), _

New KeyValuePair(Of String, Integer)("C#", 1200000), _

New KeyValuePair(Of String, Integer)("J#", 300000), _

New KeyValuePair(Of String, Integer)("C++/CLI", 600000)}

Dim Query = (From O As String In CLRLanguage Order By (From Count In CLRCount Where Count.Key = O Select Count.Value))

  温故知新

  Visual Basic 9 不完全入门系列(1) : 语法糖

  Visual Basic 9 不完全入门系列(2) : 语法增强

  Visual Basic 9 不完全入门系列(3) : LINQ 简介

  结语

  Linq 实质上仍然是编译时行为,这决定了它不可能作出过多的变化,然而它所代表的快速开发的势头,则是难以扭转的。毕竟,没有人希望再以晦涩难懂的语法写出晦涩难懂的程序,哪怕它在性能上有一定的提升。近来改版繁忙,加之课业繁重,写作速度不得不放慢,因此见谅。同时,希望您能关注 Visual Basic 团队,我们将尽力提供更好的技术随笔。

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号