vb的LINQ实现
vb实现LINQ非常简单的例子:
Dim numbers() As Integer = {1, 2, 3, 4, 5, 6, 7}
Dim allNumbers = From number In numbers
For Each num In allNumbers
Console.WriteLine(num & " ")
Next
LINQ中Let用法:
let关键字,可以让我们的linq查询不单单仅返回IEnumberable<T>类型的结果了,一个linq语句可以添加多个let关键字。
Public Sub TestLet()
Dim numbers() As Integer = {1, 2, 3, 4, 5, 6, 7}
'let关键字,允许我们定义第二个变量,并存储特定值。本例中,存储了,是否偶数的判断
'这意味着,返回值可以不单单只是一个IEnumerable(of T)类型的值了。
Dim myEvens = From number In numbers
Let isEven = (number Mod 2 = 0)
For Each even In myEvens
Console.WriteLine(even.number & " " & even.isEven)
Next
End Sub
LINQ中select用法:
上面的两个例子,我们省略了select关键字,这意味着我们使用了默认的select行为,即,选择了指定的每个查询结果(含let变量),逻辑上等同于select *.使用select关键字,我们可以选择或者组合我们想要的结果。同时重新确定变量的作用域,因为linq查询语句只公开select的内容。
Dim customerInfo = From cust In Customers, ord In cust.Orders _
Select myDate = ord.OrderDate, _
name = cust.FirstName & cust.LastName For Each info In customerInfo
Console.WriteLine(info.myDate & info.name)
Next
LINQ中的查询结果
上面的例子中,查询结果均使用了匿名类型。匿名类型允许你可以在select子句中指定不同数量的字段,而无需预先指定,由特定字段组合出来的准确类型。
编译器会推断出匿名类型的结构。匿名类型也是强类型的。
LINQ的延迟查询
查询声明实际上不会检索这些数据;只在执行需要数据的操作时,才会导致检索这些数据,这样你可以将查询分成几个逻辑部分,并且仍能实现,只要运行一次就可以得到结果的性能优势。
但是像count之类的方法,是需要立即执行的。
立即执行demo:
Dim customerInfo = From cust In Customers, ord In cust.Orders _
Select myDate = ord.OrderDate, _
name = cust.FirstName & cust.LastName Dim count = customerInfo.Count
延迟执行demo:
Dim seattleCustomers = From cust In Customers
Where cust.City = "Seattle"
Dim recentOrders = From ord In orders
Where ord.OrderDate.Year = 2012 Dim cusInfos = From cust In seattleCustomers, ord In recentOrders
Where cust.CustomerId = ord.CustomerId
Select name = cust.LastName & ", " & cust.FirstName, _
cust.CustomerId, ord.OrderDate
Order By OrderDate, name '上面LINQ只有在此处运行时,才被执行
For Each custInfo In cusInfos
'take action on the data here
Next
参考文章:
http://msdn.microsoft.com/zh-cn/magazine/cc163401.aspx
vb的LINQ实现的更多相关文章
- vb.net Linq 筛选(像 select distinct) DateTable 日期数据中的年份
Private Sub initDDLByYear(ByVal dt As DataTable) ddlByYear.Items.Clear() ddlByYear.Items.Add(") ...
- VB.NET vs. C#
VB.NET Program Structure C# Imports System Namespace Hello Class HelloWorld Overloads Shar ...
- C# 4.0 的 Visual Studio 2010 示例
C# 4.0 的 Visual Studio 2010 示例 我们将 C# 示例分为两种不同的类别: 语言示例 LINQ 示例 语言示例 语言示例帮助您熟悉各种 C# 语言功能.这些示例包含在 Lan ...
- 在VB中使用Linq To SQLite注意事项
昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...
- 在VB中利用Nuget包使用SQLite数据库和Linq to SQLite
上午解决了在C#中利用Nuget包使用SQLite数据库和Linq to SQLite,但是最后生成的是C#的cs类文件,对于我这熟悉VB而对C#白痴的来说怎么能行呢? 于是下午接着研究,既然生成的是 ...
- VB.NET中使用Linq TO SQL添加数据后获得自增长列ID
VB.NET中使用Linq TO SQL添加数据后获得自增长列ID: Dim tempOrdre As New Order With { .CustomerID = cmbCustomerName.S ...
- [转载代码]VB.NET 中查询 Linq to SQL 执行时的SQL语句
在搜索使用LINQ TO SQL 添加数据后获得自增长ID的方法时,发现C#可以使用DebuggerWritter把使用Linq to SQL执行的SQL语句显示到即时窗口,于是在网上搜索到在VB.N ...
- VB.NET中LINQ TO List泛型查询语句(分组,聚合函数)
Public Class LinqToList 'LINQ在C#中使用比较方便,但是在VB中使用比较麻烦,复杂,和C#用法并不太一样 Dim listNew As List(Of Product) = ...
- 使用Microsoft Roslyn提取C#和VB.NET源代码中的字符串常量
Microsoft Roslyn是微软.NET“编译器即服务(Compiler as a Service)”的主要产品,它提供了开放的编译器API,并为源代码产生.分析和重构提供了新一代的语言对象模型 ...
随机推荐
- Android常用URI以及URI简介
Android常用URI android管理联系人的URI: ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri ContactsContract.Comm ...
- Extjs中grid表头内容居中
在每一列中加上header属性即可,源码: header:'<div style=" text-align: center; vertical-align: middle;" ...
- IE10的bug?disabled button如何触发事件
最近碰到一个问题,IE10下的,貌似是个bug,求助! 问题表现为:在内部有dom元素的情况下,disabled状态的button会因为子元素的mouseover产生事件冒泡而触发,也就是说,disa ...
- Linux_install jdk
Linux安装JDK步骤 1.先从网上下载jdk(jdk-7u1-linux-i586.rpm),下载地址:http://www.oracle.com/technetwork/java/javase/ ...
- oldboy第一天学习
oldboy第一天学习 一.听Alex Li 吹牛逼! 1.老男孩附加的功能.每节课都有鸡汤.节省时间,投资自己.结识更多的朋友. 2.python的创始人为吉多·范罗苏姆(Guido van Ros ...
- uva 10036 Problem C: Divisibility
题意:能否在一个整数序列的每相邻的两项之间添加一个加减号,使得最终结果能被一个给定整数K<=100整除. dp[i][j]表示第i个数取余k为j的布尔值. #include <cstdio ...
- JDBC连接mysql,TOMCAT错误: Cannot convert value '0000-00-00 00:00:00' from column 10 to TIMESTAMP
解决思路依据如下URL: http://blog.csdn.net/stail111/article/details/5640109 问题:MySQL数据库,如果数据库中日期字段为空为值为'0000- ...
- Windows 系统版本判断
Windows 系统版本判断 博客分类: C/C++ 很多情况下,需要软件判断操作系统,其实网上写的都很少,我希望这篇文章能给大家帮助 首先我们要在.h中定义下面的东西 #define PRODU ...
- 普通的101键盘在Mac上的键位对应
为了方便,搞了一个普通的101有线全键盘 + Magic TrackPad配Macbook. 然后发现了一个小问题,按键对应似乎不像我想的那么完美,F1~F12和Macbook不对应,于 ...
- 8.2.1.10 Nested-Loop Join Algorithms 嵌套循环 关联算法:
8.2.1.10 Nested-Loop Join Algorithms 嵌套循环 关联算法: MySQL 执行关联在表之间使用一个嵌套循环算法或者变种 Nested-Loop Join Algori ...