上一篇是根据百度百科写的随便,同时也纠正我对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;

最新文章

  1. 辛巴学院-Unity-剑英陪你零基础学c#系列(二)顺序
  2. 【USACO 1.3】Barn Repair
  3. WCF初探-7:WCF服务配置工具使用
  4. (学习网址)Python 自动化测试
  5. Java Hour 38 Weather ( 11 ) &ndash; fastjson
  6. go learning notes
  7. Android Material Design-Creating Lists and Cards(创建列表和卡)-(三)
  8. 深入理解final和static关键字
  9. Velocity(2)——常用语法
  10. linux下磁盘分区详解 图文(fdisk;mkfs)
  11. python-重载
  12. 湖南大学第十四届ACM程序设计新生杯(重现赛)
  13. jmeter接口测试实例5-文件上传
  14. AppUtil
  15. (Review cs231n) The Gradient Calculation of Neural Network
  16. 【HAOI2011】 向量
  17. 使用UIkit的uk-form-icon后input框无法输入的问题
  18. zend studio 修改字体大小
  19. android开源项目集合
  20. 类unix系统同步目录,却不同步目录中文件

热门文章

  1. SQLite编码
  2. UE4.5.0的Kinect插件(Plugin)&lt;一&gt;
  3. 使用Boolean类型同步锁引起异常的分析
  4. 笔记-Windows10家庭中文版系统下使用Docker
  5. JAVA SortedMap接口
  6. 从华为产品学到什么是devops
  7. DOS批处理
  8. Linux SVNserver建立
  9. 使用JScript脚本批量修改VC工程设置
  10. VSCode 小鸡汤 第01期 - REST Client 简单好用的接口测试辅助工具