C#初识LINQ
什么是LINQ
长期以来,开发社区形成以下的格局:
1、面向对象与数据访问两个领域长期分裂,各自为政。
2、编程语言中的数据类型与数据库中的数据类型形成两套不同的体系,例如:
C#中字符串用string数据类型表示。
SQL中字符串用NVarchar/Varchar/Char数据类型表示。
3、SQL编码体验落后
没有智能感知效果。
没有严格意义上的强类型和类型检查。
4、SQL和XML都有各自的查询语言,而对象没有自己的查询语言。
上面描述的问题,都可以使用LINQ解决,那么究竟什么是LINQ呢?
LINQ(Language Integrated Query)即语言集成查询。
LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询。用于保存和检索来自不同数据源的数据,从而消除了编程语言和数据库之间的不匹配,以及为不同类型的数据源提供单个查询接口。
LINQ总是使用对象,因此你可以使用相同的查询语法来查询和转换XML、对象集合、SQL数据库、ADO.NET数据集以及任何其他可用的LINQ提供程序格式的数据。
LINQ主要包含以下三部分:
1、LINQ to Objects 主要负责对象的查询。
2、LINQ to XML 主要负责XML的查询。
3、LINQ to ADO.NET 主要负责数据库的查询。
LINQ to SQL
LINQ to DataSet
LINQ to Entities
三、LINQ的优势
1、熟悉的语言:开发人员不必为每种类型的数据源或数据格式学习新的语言。
2、更少的编码:相比较传统的方式,LINQ减少了要编写的代码量。
3、可读性强:LINQ增加了代码的可读性,因此其他开发人员可以很轻松地理解和维护。
4、标准化的查询方式:可以使用相同的LINQ语法查询多个数据源。
5、类型检查:程序会在编译的时候提供类型检查。
6、智能感知提示:LINQ为通用集合提供智能感知提示。
7、整形数据:LINQ可以检索不同形状的数据。
C#初识LINQ的更多相关文章
- 初识Linq to Entity
技术介绍: LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.net代码,以与查询数据库相同的方式操作内存数据 ...
- .NET中那些所谓的新语法之四:标准查询运算符与LINQ
开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...
- Linq介绍
什么是LINQ? LINQ全称Language Integrated Query,中文翻译"语言集成查询".在.NET框架中,大致使用三大组件实现这个封装,分别 LINQ to O ...
- 查询表达式Linq
LINQ简介 OO(面向对象)以外的疆域:信息的访问与整合.关系数据库与XML为其中的典型应用. .net Language Integrated Query(Linq):不采用特定关于数据库与XML ...
- Linq 学习(1) 概述
本篇简单回顾C#语言集合操作的变化,通过与Linq对等的面向对象的语法来认识Linq.Linq是Language Integrated Query, 初识Linq感觉跟SQL Server的Tsql很 ...
- Linq初探
1.什么是LINQ LINQ是语言集成查询(Language Integrated Query),这项技术是在.net 3.5就已经引入的技术,极大的方便了数据的查询,他可以支持数据库.XML.ADO ...
- linq深入
一.匿名类:[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思,我匿了 在开发中,我们有时会像下面的代码一样声明一个匿名类:可以看出,在匿名类的语法中并没有为其命名,而是直接的一个ne ...
- C#进阶之路(五):Linq初识
关于LINQ的文章,网上有很多,所以这篇文章我主要是总结下我自己的学习心得. 首先需要先了解的相关技术 1.隐式类型.匿名类型.对象初始化器 1)隐式类型,使用var关键字创建,C#编译器会根据用于初 ...
- 使用Expression做Linq的參數化排序
Linq非常的好用,減少大量的資料庫操作手序,使用具名的類別,減少了在程式中寫SQL寫錯字的可能性,問題來了,如果我想用QueryString中的參數,作為排序的依據,但是因為是具名的類別,不能指定字 ...
随机推荐
- [转]触发fullgc的条件
良好的状态是:minor gc比较多 full gc 比较少 因为fullgc时间比较慢,而且会占用CPU的时间片. 不好的状态是:minor gc比较少 full gc 比较多 这样程序就一直卡在f ...
- 在npm上如何发布自己的包
环境需要:node和npm 然后在本地建一个文件夹作为你要发布的模块 然后在这个文件夹下打开cmd 执行:npm init 按照提示写对应的,或者先不写也可以,最后y 这时候在mcrm这个文件夹下就出 ...
- IntelliJ WebStorm 最新版 安装永久破解教程【最强,可用至2099年】
IntelliJ WebStorm 2018.3.6安装永久破解[最强] 一. 在官网下载WebStorm安装包 链接:http://www.jetbrains.com/webstorm/down ...
- ubuntu 安装 lnmp 参考
暂时参考 https://blog.csdn.net/weixin_36025897/article/details/81417458 https://www.jianshu.com/p/37cacd ...
- repeater列表中直接修改状态
<asp:Repeater ID="RepeaterArticleList" runat="server" onitemdatabound="R ...
- jQuery jqgrid
1.写div <div class="ibox-content"> <div class="jqGrid_wrapper"> <! ...
- Spring核心知识
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spri ...
- TCP/IP详解,卷1:协议--链 路 层
引言 在 T C P / I P 协议族中,链路层主要有三个目的:(1)为 I P 模块发送和 接收 I P 数据报:(2)为 A R P 模块发送 A R P 请求和接收 A R P 应答:(3)为 ...
- mybatis(六):设计模式 - 责任链模式
- 我竟然把today = new Date();写在了全局变量里面
let today = new Date();应该在每次用之前重新生成新的对象,因为对于例如 today.getTime() 这种方法,取得是today对象的time,而非调用today对象取得实时时 ...