LINQ学习笔记(二)
上一篇是根据百度百科写的随便,同时也纠正我对LINQ的看法,因为首次接触LINQ是使用EF对数据库数据的操作。
所以误以为它操作数据库的一种新手段。
LINQ语言集成查询是一组技术的名称,这些技术建立在查询功能直接集成在带C#语言的基础上。
借助LINQ,查询现在已经是高级语言构造,就如同类、方法、事件等等。
LINQ的数据源包括SQL数据库,ADO.NET数据集,XML文档和流,以及.NET集合中数据。
下面是以简单的例子入门
// 指定数据源
int[] scores = new int[] { 97, 92, 81, 60 };
// 定义查询表达式
IEnumerable<int> scoreQuery =
from score in scores
where score > 80
select score;
// 执行查询
foreach (int i in scoreQuery)
{
Console.Write(i + " ");
}
输出结果是:97 92 81
其中scoreQuery被成为"查询变量",简称"查询"。
查询变量本身并不存储实际的结果数据,而是当foreach语句执行时通过变量i返回的。
LINQ查询的数据只有在用到的时候才会真正的去查询,因为就是说如何不执行foreach类似的
查找数据的语句,是不会有数据的出现的。
其中score是范围变量。范围变量的类型是有数据源中元素的类型确定的,上述score是int类型。
查询表达式必须以from子句开头,同时指定数据源和范围变量,并且以select或group子句结尾。
在对源序列节能型遍历的过程中,范围变量表示源序列中的每个后续元素。
在第一个子句from和最后一个select胡或group子句之间,表达式必须包含
一个或多个下列可选子句:where、orderby、join、let甚至附加的from子句。
还可以是使用into关键字使join或group子句的结果充当同一下查询表达式中附加
查询子句的源。
LINQ的查询语法在上一篇中并未做解释
所以在这一篇加以解释
LINQ是存在两种语法。
1.Query syntax 查询语法 ,就是通过写查询表达式的方式实现
例如:
IEnumerable<City> queryMajorCities =
from city in cities
where city.Population > 100000
select city;
上述的代码就是以查询语句的方法实现的,但此时并不存在真正的数据。
2.Method-based syntax 基于方法的语法,就是通过方法的形式实现查询
例如:
IEnumerable<City> queryMajorCities2 = cities.Where(c => c.Population > 100000);
其中cites是数据源,通过在数据源的方法实现查询。
以上的查询变量都是显示指定了类型,但它因为是支持类型推断来隐式类型化的。
使用var关键字指示编译器在编译时推断查询变量的类型。
例如:
var queryCities =
from city in cities
where city.Population > 100000
select city;
LINQ学习笔记(二)的更多相关文章
- C# LINQ学习笔记二:LINQ标准查询操作概述
本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5801249.html,记录一下学习过程以备后续查用. “标准查询运算符”是组成语言集成查询 (LINQ) 模式 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- 要求两个异步任务都完成后, 才能回到主线程:dispatch_group_t
需求:两个异步任务都完成后, 回到主线程 /** 1.下载图片1和图片2 2.将图片1和图片2合并成一张图片后显示到imageView上 思考: * 下载图片 : 子线程 * 等2张图片都下载完毕后, ...
- Erlang与ActionScript3采用JSON格式进行Socket通讯
http://hideto.iteye.com/blog/235811 需要下载as3corelib来为ActionScript3处理JSON codec server.erl -module(ser ...
- 学习鸟哥的Linux私房菜笔记(7)——文件查找与文件管理1
一.可执行文件的搜索 which 显示一个可执行文件的完整路径 按照alias->$PATH的顺序查找 查看系统的环境变量 whereis 搜索一个可执行工具及其相关配置.帮助 slocate ...
- 将oracle从数据库32位平台迁移到64位置
客户32位置oracle数据库系统的磁盘损坏,幸运的是,oracle数据库完美无损.客户数据库迁移到新购设备.新设备的内存64G,制REDHAT 6.2 64位置,直接拷贝数据文件肯定是不.由于ora ...
- 配置cordova的android开发环境(无android studio)
原文:配置cordova的android开发环境(无android studio) 趁元旦放假想试一下cordova,不想安装庞大的android studio,所以想最小化安装,居然花了一整天的时间 ...
- React为啥很多类里的标签上事件处理函数要用bind(this)
render() { return ( <div> <p onClick={this.clickHandler.bind(this)}>vz</p> </di ...
- Java类、实例的初始化顺序
今晚是阿里巴巴 2013 校园招聘的杭州站笔试.下午匆忙看了两张历年试卷,去现场打了瓶酱油. 题目总体考察点偏基础,倒数第二题(Java 附加题)比较有趣,考察了 Java 初始化机制的细节,在此摘录 ...
- 《深入浅出WPF》笔记——模板篇
原文:<深入浅出WPF>笔记--模板篇 我们通常说的模板是用来参照的,同样在WPF中,模板是用来作为制作控件的参照. 一.认识模板 1.1WPF菜鸟看模板 前面的记录有提过,控件主要是算法 ...
- Verilog分频器
verilog设计进阶 时间:2014年5月6日星期二 主要收获: 1.自己动手写了第一个verilog程序. 题目: 利用10M的时钟,设计一个单周期形状例如以下的周期波形. 思考: 最開始的想法是 ...
- 主干(trunk)、分支(branch )、标记(tag)
主干(trunk).分支(branch ).标记(tag) 用法示例 + 图解 以svn为例,git的master相当于trunk,dev分支相当于branches --------------- ...