•LINQ(发音:Link)是语言级集成查询(Language INtegrated Query)

•LINQ是一种用来进行数据访问的编程模型,使得.NET语言可以直接支持数据查询
•LINQ的目标是降低访问数据的复杂度
•LINQ可以用统一的方法访问不同类型的数据,可以将数据作为对象使用
•能够更好地与编程模型集成
•可以在Visual Studio中进行智能提示
•动态编程
 
LINQ的历史:
•从语言方面的进化
–委托
–匿名方法
–Lambda表达式
–Linq查询表达式
•从时间方面的演进
–2004年
–2005年9月,C#2.0的PDC上发布
–2005年11月,C#2.0预览版
–2006年1月,VB8.0预览版
–2007年11月,.net 3.5发布
 
 LINQ基础:

•语言集成查询 (LINQ) 允许开发人员通过强类型化语法使用.NET Framework 3.5 代码编写类似SQL 的查询。
•LINQ 查询还具有一个标准查询操作符库来增强其功能。这些标准查询操作符对序列进行运算并可执行各种运算,如确定序列中是否存在某个值以及对序列运行合计函数(如求和)
•LINQ包括:
–LINQ to Objects  用于对象的查询
–LINQ to XML  对XML数据的查询
–LINQ to ADO.NET  对数据库的查询
•LINQ to DataSets  数据集
•LINQ to Entities  ORM对象
•LINQ to SQL  简易ORM框架
•命名空间在System.Linq
•实现 IEnumerable<T> 或 IQueryable<T> 接口的对象都可使用LINQ操作
 
LINQ框架图:
 
LINQ基础语法:

•From ?? In ** where … select  new {};
–查询语法是以 from 关键字开头的,而不是以 select 关键字开头的?
–为了IDE的智能感知(Intelisence)这个功能,select 关键字放在后面
•例:
var q =   
from c in db.Customers   
where c.City == "London"   
select c;
•语法与数据库的SQL命令有些相似
select * from employee where empno=7376;
 
LINQ基础操作符:

•聚合 
•Aggregate  对序列执行一个自定义方法
•Average  计算数值序列的平均值
•Count  返回序列中的项目数(整数)
•LongCount  返回序列中的项目数(长型)
•Min  查找数字序列中的最小数
•Max  查找数字序列中的最大数
•Sum  汇总序列中的数字
•元素 
•DefaultIfEmpty  为空序列创建默认元素
•ElementAt  返回序列中指定索引的元素
•ElementAtOrDefault返回序列中指定索引的元素,或如果索引超出范围则返回默认值
•First  返回序列中的第一个元素
•FirstOrDefault  返回序列中的第一个元素,或者如果未找到元素,则返回默认值
•Last  返回序列中的最后一个元素
•LastOrDefault  返回序列中的最后一个元素,或者如果未找到元素,则返回默认值
•Single  返回序列中的单个元素
•SingleOrDefault  返回序列中的单个元素,或者如果未找到元素,则返回默认值
•排序
•OrderBy  以升序按值排列序列
•OrderByDescending  以降序按值排列序列
•ThenBy  升序排列已排序的序列
•ThenByDescending  降序排列已排序的序列
•Reverse  颠倒序列中项目的顺序
•…
•…
 
 
LINQ的未来:

•一切皆可LINQ,一切皆有可能
•程序语言向自然语言的进化
•数据库存储在软件系统分层中更清晰
•基于.net平台的软件体系更好应用ORM
•影响编程习惯,及解决问题的思路
 
LINQ参见资料:

•http://dev.yesky.com/topic/305/8142805.shtml
•http://www.verycd.com/topics/2762344/
•http://www.docin.com/p-49692160.html
•http://cid-79cf5e75e6e5fd50.spaces.live.com/blog/cns!79CF5E75E6E5FD50!379.entry
 
转载自:https://blog.csdn.net/sytweibo/article/details/5542934。

LinQ是什么?的更多相关文章

  1. Linq表达式、Lambda表达式你更喜欢哪个?

    什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在& ...

  2. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  3. [C#] 走进 LINQ 的世界

    走进 LINQ 的世界 序 在此之前曾发表过三篇关于 LINQ 的随笔: 进阶:<LINQ 标准查询操作概述>(强烈推荐) 技巧:<Linq To Objects - 如何操作字符串 ...

  4. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  5. LINQ to SQL语句(7)之Exists/In/Any/All/Contains

    适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...

  6. .NET深入实战系列—Linq to Sql进阶

    最近在写代码的过程中用到了Linq查询,在查找资料的过程中发现网上的资料千奇百怪,于是自己整理了一些关于Linq中容易让人困惑的地方. 本文全部代码基于:UserInfo与Class两个表,其中Cla ...

  7. LINQ Group By操作

    在上篇文章 .NET应用程序与数据库交互的若干问题 这篇文章中,讨论了一个计算热门商圈的问题,现在在这里扩展一下,假设我们需要从两张表中统计出热门商圈,这两张表内容如下: 上表是所有政区,商圈中的餐饮 ...

  8. Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数

    11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...

  9. Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数

    11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...

  10. Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询

    问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...

随机推荐

  1. margin和padding的用法与区别--以及bug处理方式

    margin和padding的用法: (1)padding (margin) -left:10px; 左内 (外) 边距(2)padding (margin) -right:10px;   右内 (外 ...

  2. linux之用户密码破解的操作

    一 无引导介质救援模式破解root用户密码 1 启动虚拟用户,在GRUB启动画面停留的那段时间,用上下键选择启动项. 2 用‘e’键进入你选择的启动项 ,然后用上下键将光标移动到“linux16... ...

  3. GBDT(MART) 迭代决策树详解

    在网上看到一篇对从代码层面理解gbdt比较好的文章,转载记录一下: GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Re ...

  4. HTML中的table导出为Excel文件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Java ,python面向对象的继承及其区别

    JAVA JAVA继承基本样式 class Demo extends Object{ Demo(int a){ this(); } Demo(){ super(); } } java默认继承Objec ...

  6. hdu 4027 Can you answer these queries?[线段树]

    题目 题意: 输入一个 :n  .(1<=n<<100000) 输入n个数    (num<2^63) 输入一个m :代表m个操作    (1<=m<<100 ...

  7. c++ 日志输出库 spdlog 简介(1)

    参考文章: log库spdlog简介及使用 - 网络资源是无限的 - CSDN博客 http://blog.csdn.net/fengbingchun/article/details/78347105 ...

  8. vue keep-alive解决关闭标签动态缓存问题

    直接上代码: <keep-alive :include='topNavMentNames'> <router-view ></router-view> </k ...

  9. Python 绝技 —— UDP 服务器与客户端

    i春秋作家:wasrehpic 0x00 前言 在上一篇文章「Python 绝技 —— TCP 服务器与客户端」中,介绍了传输层的核心协议 TCP ,并运用 Python 脚本的 socket 模块演 ...

  10. 字符串拼接时使用StringBuffer还是StringBuilder?

    StringBuffer.StringBuilder和String一样,也用来代表字符串.String类是不可变类,任何对String的改变都 会引发新的String对象的生成:StringBuffe ...