序言

此系列的所有代码都是运行在Win 7 64位 + Visual Basic 2008 Express Edition的环境中

之所以学习List集合类,是因为我们先前学习的数组自身的缺陷:

1.必须指定数组的长度;

2.若要增长数组的长度须用ReDim语句;

3.将整个数组作为参数传递不能有效实现预期;

就不得不寻找一个更好的解决方案,List集合类倒是不错的选择,List是一个.NET框架的集合类,是一组预包装的数据结构,提供了比数组更强的功能。

     这个集合类的最大优点

1.可靠;2.强大;3.高效;4.动态改变大小;

要学习数据就必须学习LINQ(语言集成查询),LINQ允许我们编写从各种不同的数据源(而不仅仅是数据库)提取信息的查询表达式(与SQL查询相似)。

LINQ to Object可以获取数据的数据源有:数组、List集合、类对象。

查询 (Visual Basic)

Visual Basic,能够创建语言集成查询 (LINQ)在代码中的表达式,集成查询都是以From子句开始,并与其它的子句相互配合。

Aggregate 子句Distinct 子句From 子句Group By 子句Group Join 子句Join 子句Let 子句Order By 子句Select 子句Skip 子句Skip While 子句Take 子句Take While 子句Where 子句

Aggregate 子句:,将一个或多个聚合函数应用于集合。
Distinct 子句:以消除重复值在查询结果中的当前范围变量的值限制。
From 子句:指定集合和查询的范围变量。
Group By 子句:用于对查询结果的元素进行分组,可用于将聚合函数应用到每个组。
Group Join 子句:将两个集合合并为单个分层集合。
Join 子句:将两个集合合并为单个集合。
Let 子句:用于计算一个值,并将其分配给该查询中的新变量。
Order By 子句:在查询中指定列的排序顺序。
Select 子句:声明了一组查询的范围变量。
Skip 子句:它跳过指定的数量的集合中的元素,然后返回剩余元素。
Skip While 子句:从而绕过集合中的元素,只要指定的条件是true,然后返回剩余元素。
Take 子句:这将从集合的开头返回指定的数量的连续元素。
Take While 子句:包括在集合中的元素,只要指定的条件是true并跳过剩余元素。
Where 子句:指定查询的筛选条件。

下面事例的功能:将数组进行传递、过滤、排序。学习From与Where、Order By结合使用。

一、模块代码

'Fig. 9.2:LINQWithSimpleTypeArray.vb
'LINQ to Objects using an Integer array.
Module LINQWithSimpleTypeArray
Sub Main()
'create an integer array
Dim values As Integer() = {2, 9, 5, 0, 3, 7, 1, 4, 8, 5} Display(values, "Original array:") 'display original values 'LINQ query that obtains values greater than 4 from the array
Dim filtered = _
From value In values _
Where value > 4 _
Select value
'用Dim定义的filtered相当于一个带条件的数组
'display filtered results
Display(filtered, "Array values greater than 4:") 'use Order By clause to sort original array in ascending order
Dim sorted = _
From value In values _
Order By value _
Select value
Display(sorted, "Original values,sorted:") 'display sorted results 'sort the filtered results into descending order
Dim sortFilteredResults = _
From value In filtered _
Order By value Descending _
Select value
Display(sortFilteredResults, "Values greater than 4,descending order(separatedly):") 'filter original array and sort in descending order
Dim sortAndFilter = _
From value In values _
Where value > 4 _
Order By value Descending _
Select value
Display(sortAndFilter, "Values greater than 4,descending order(one query):") Console.ReadKey()
End Sub
Sub Display(ByVal results As IEnumerable(Of Integer), ByVal header As String)
'上句中的IEnumerable是一个接口,定义了人与系统之间彼此交互的方式,并对它进行标准化
'ByVal results As IEnumerable(Of Integer)接口直接传递了一个整型数组
Console.Write("{0}", header) 'display header
'display each element,separated by spaces
For Each element In results
Console.Write(" {0}", element)
Next
Console.WriteLine() 'add end of line
End Sub 'Display End Module 'LINQWithSimpleTypeArray

二、运行结果:

源于:Visual Basic 2008 How To Program     P298

活代码LINQ——01的更多相关文章

  1. 活代码LINQ——09

    一.代码 ' Fig. 9.7: LINQWithListCollection.vb ' LINQ to Objects using a List(Of String). Module LINQWit ...

  2. 活代码LINQ——06

    一.模块代码 ' Fig. 9.4: LINQWithArrayOfObjects.vb ' LINQ to Objects using an array of Employee objects. M ...

  3. 活代码LINQ——08

    一.模块代码 ' Fig. 9.6: ListCollection.vb ' Generic List collection demonstration. Module ListCollection ...

  4. 活代码LINQ——07

    来源说明:https://blog.csdn.net/sha574810590/article/details/40738069 在LINQ中,数据源和查询结果实际上都是IEnumerable< ...

  5. 活代码LINQ——05

    片段代码: ' Exercise 9.3 Solution: Invoice.vb ' Invoice class. Public Class invoide ' declare variables ...

  6. 活代码LINQ——04

    一.主模块代码: 'Fig.4.16:GradeBookTest.vb 'Create and manipulate a GradeBook object;illustrate validation ...

  7. 活代码LINQ——03

    一.主模块代码: 'Fig.4.13:GradeBookTest.vb 'GradeBook constructor used to specify the course name at the 't ...

  8. 活代码LINQ——02

    一.复习基础——属性与实例变量 'Fig. 4.8:GradeBookTest.vb 'Create and manipulate a GradeBook object. Module GradeBo ...

  9. 编译压缩代码 MFCompress-src-1.01 :对‘***’未定义的引用

    提示 MFCompressD.o:在函数‘main’中:MFCompressD.c:(.text.startup+0x34a): 警告: the use of `tempnam' is dangero ...

随机推荐

  1. python爬取全名k歌

    python3 爬取全名k歌 代码: import re import requests import ssl ssl._create_default_https_context=ssl._creat ...

  2. 将markdown文档使用gulp转换为HTML【附带两套css样式】

    将markdown文档使用gulp转换为HTML[附带两套css样式] 今天遇到一个需求,即将Markdown文档转为为HTML在网页展示,身为一名程序员,能用代码解决的问题,手动打一遍无疑是可耻的. ...

  3. Manjaro 安装svn客户端,以及checkout使用命令

    安装svn sudo pacman -S svn checkout操作指令 svn co http://xxxxxxx /home/xx update 更新版本 svn up [文件/目录] 直接使用 ...

  4. P4116 Qtree3

    思路 可以树剖可以LCT,树剖就是每个重链开一个SET维护一下黑点的深度 非常不优美 使用LCT,在splay上二分找出需要的节点即可 代码 #include <cstdio> #incl ...

  5. Best Practices for Assembly Loading

    原文链接 This article discusses ways to avoid problems of type identity that can lead to InvalidCastExce ...

  6. linux下ifconfig命令看不到IP centos7——ens33

    当前环境VMware15+centos7  在终端输入ifconfig后没有开到IP地址: 解决方法:root用户执行命令 cd /etc/sysconfig/network-scripts/ vi ...

  7. 打包发布Python模块或程序,安装包

    Python模块.扩展和应用程序可以按以下几种形式进行打包和发布: python setup.py获取帮助的方式 python setup.py --help python setup.py --he ...

  8. ASP.NET MVC 访问静态文件

    When use asp.net MVC, we can add a special route to access the image files. the code like below: 1. ...

  9. Java中封装类型.valueOf()

    @Test public void test() { Integer i3 =128; Integer i4=128; boolean integerGT127=i3==i4; //false Sys ...

  10. Java并发编程的挑战

    并发编程的目的是为了让程序运行得更快,但是,并不是线程启动的越多,就能让程序最大限度地并发执行.并发编程时,会面临非常多的挑战,比如上下文切换的问题,死锁的问题,以及受限于各种硬件和软件的资源限制问题 ...