活代码LINQ——01
序言
此系列的所有代码都是运行在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的更多相关文章
- 活代码LINQ——09
一.代码 ' Fig. 9.7: LINQWithListCollection.vb ' LINQ to Objects using a List(Of String). Module LINQWit ...
- 活代码LINQ——06
一.模块代码 ' Fig. 9.4: LINQWithArrayOfObjects.vb ' LINQ to Objects using an array of Employee objects. M ...
- 活代码LINQ——08
一.模块代码 ' Fig. 9.6: ListCollection.vb ' Generic List collection demonstration. Module ListCollection ...
- 活代码LINQ——07
来源说明:https://blog.csdn.net/sha574810590/article/details/40738069 在LINQ中,数据源和查询结果实际上都是IEnumerable< ...
- 活代码LINQ——05
片段代码: ' Exercise 9.3 Solution: Invoice.vb ' Invoice class. Public Class invoide ' declare variables ...
- 活代码LINQ——04
一.主模块代码: 'Fig.4.16:GradeBookTest.vb 'Create and manipulate a GradeBook object;illustrate validation ...
- 活代码LINQ——03
一.主模块代码: 'Fig.4.13:GradeBookTest.vb 'GradeBook constructor used to specify the course name at the 't ...
- 活代码LINQ——02
一.复习基础——属性与实例变量 'Fig. 4.8:GradeBookTest.vb 'Create and manipulate a GradeBook object. Module GradeBo ...
- 编译压缩代码 MFCompress-src-1.01 :对‘***’未定义的引用
提示 MFCompressD.o:在函数‘main’中:MFCompressD.c:(.text.startup+0x34a): 警告: the use of `tempnam' is dangero ...
随机推荐
- 纯CSS3完成选项卡,不要js完成的选项卡
我爱撸码,撸码使我感到快乐!大家好,我是Counter.今天就来敲一敲,选项卡,注意哦,不是一般利用js完成的选项卡,今天是纯用HTML和CSS来完成的,这怎么可能?那你不用js的点击事件,怎么处理? ...
- BZOJ-1587|前缀和 预处理 dp||叶子合并leaves
叶子合并leaves Description 在一个美丽的秋天,丽丽每天都经过的花园小巷落满了树叶,她决定把树叶堆成K堆,小巷是笔直的 共有N片树叶(树叶排列也是笔直的),每片树叶都有一个重量值,并且 ...
- 论文笔记:Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation
Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation2019-03-18 14:4 ...
- python笔记--socket编程
socket编程 osi七层模型 socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族 ...
- 读书笔记--《编写高质量代码:改善Python程序的91个建议》
第一章 引论 建议写Pythonic式的代码,我理解为充分利用pythonAPI,用最简洁方式写出代码 1.两个变量交换: a, b = b, a 2.翻转list: a = [1, 2, 3, ...
- T57274 黑暗城堡
传送门 思路: 先求出各个点到 1 的最短路径.分别用两个数组将最短路径记录下来(一个要用来排序).按排序后的 dis 值从小到大枚举各点加入树有多少种方案,最后根据乘法原理把各个点的方案数乘起来就是 ...
- 2>&1的意思
2>&1的意思就是将标准错误也输出到标准输出当中.
- MPU6050可以读取器件ID值,但读出的加速度计和陀螺仪的数据均为零
今天在调试MPU6050时发现,MPU6050可以正常读取器件ID,但读取的加速度计和陀螺仪的数据均为零. 经过排查发现,MPU6050第20脚的电容没用焊接,C6可以使用10uF的电容.
- Phpstorm-远程连接服务器实时编辑代码
一,配置远程服务器FTP 1.打开Phpstorm >>> 选择 2.选择 3.输入项目名称(此项目名称不会同步到服务器,只是在本地电脑上的项目名称) 4.将编辑器设置为实时自动同步 ...
- photoKit使用笔记
@主要用到的类 1PHAssetCollection:图片资源数组(代表着相簿数组) 作用:获取相簿资源数组 示例代码: //获取相簿资源 PHFetchResult<PHAssetCollec ...