LINQ(Language Integrated Query)(1):简介
来源:互联网 发布:xp怎样连接网络打印机 编辑:程序博客网 时间:2024/04/30 03:31
C# 2.0最大的改进是泛型.C# 3.0最大的改进就是Linq(语言集成查询).Linq又细分三大块:Linq to XML,Linq to ADO.NET(Linq to SQL,Linq to DataSet,Linq to Entity),Linq to Object.
关于Linq的争议
有些人对Linq to ADO.NET可能有很多异议.觉得它是对ADO.NET再封装一次,性能降低了 .而且ADO.NET用着也挺好的.干嘛那么麻烦再学个新技术Linq.其实编程语言中新增加的一些特性往往是为了更方便开发人员,提高开发效率,降低你犯错误的可能性.当然同时得也得考虑性能方面的事了.但是现在电脑硬件配置越来越好.以前的内存才那么几百M,现在动不动就几G,CPU性能也越来越好.所以有时别太为电脑去考虑.多为程序员考虑下.怎么少写点代码实现更多的功能.至于那些简单的代码后面再要执行啥复杂的操作也不用考虑太多.像托管代码不就是替你做了很多事,比如不用去考虑啥内存泄露这样的烦心事了嘛.中间多了个CLR性能自然下降了.但你写起代码来多省事了啊.
当然了如果你觉得Linq性能不好也可以完全不用,它实现的功能采取其他方法也照样能实现.只不过多写些代码罢了.
简单例子
先举几个关于Linq to Object简单例子来大概介绍下Linq的语法.看具体怎么用.
string[] names = { "arwen", "james", "sunny", "lily", "ada" };
var name = from nain names
select na;
foreach (var str in name)
{
string s = str;
Console.WriteLine(s);
}
分析:
首先说下关键字var,它是用来做类型推断,也就是说它可以用来代替string,int等所有关键字来定义一个类型.然后编译器可编译时可以通过变量的值推断出变量类型.
其实在这里你也可以用IEnumerable<string> name 来代替var name这样定义变量.
然后就是from,select这样的关键字了.看起来很像SQL语句的语法吧.Linq的设计应该就是参照了SQL的思想吧.sql语句就是封装了很多细节,只告诉计算机去做什么,而不用告诉他具体怎么做.而我们平时用C#,Jave,C++这些语言都不仅要告诉计算机去做什么,还要怎么做.把具体的每一步用代码写出来.以上面的例子来说.如果我们要获取数组中以a开头的元素.如果没用Linq你必须这样写代码去判断
List<string> list = new List<string>();
foreach(string s in names)
{
if(s.StartWith("a")
list.Add(s);
}
就是说要自己指定计算机去具体怎么做.但如果用Linq的话就直接用下面的语句
var name = from na in names
where na.StartsWith("a")
select na;
用一个where去告诉计算机做什么就行.具体怎么做就不用管了.
所以Linq的真正的意义不仅是使你的一些操作更简单,而且引进了SQL语句那种思想.尽量封装一些具体操作细节,把注意力放在软件要实现的功能方面.当然SQL语句应用范围也是有限,只能针对表的一些简单操作,更复杂的操作还需要一些扩充,比如SQL Server有T-SQL,Oracle有PL/SQL,面对一些复杂的操作它们还得写很多代码去告诉计算机具体怎么做.
Linq也同样有局限的.查询语言,顾名思议只能查询数据.所以我们只能从数组names中获取数据,而不能通过Linq去修饰里面的数据.
Linq很多用法跟SQL类似,所以可以参照SQL那些关键字用法学下.当然Linq还有其他一些更复杂的操作.再举个简单例子说下把获得的数据排序
string[] names = { "arwen", "james", "sunny", "lily", "ada" };
var name = from na in names
orderby na descending
select na;
- LINQ(Language Integrated Query)(1):简介
- LINQ: .NET Language-Integrated Query
- LINQ,语言级集成查询(Language INtegrated Query)简介
- LINQ,语言级集成查询(Language INtegrated Query)
- [转]LINQ,语言级集成查询(Language INtegrated Query)
- Pro LINQ: Language Integrated Query in C# 2008
- LINQ,语言级集成查询(Language INtegrated Query)
- LINQ,语言级集成查询(Language INtegrated Query)
- LINQ(Language Integrated Query)(2):预备知识,扩展方法,Lambda
- C# 入门(15) LINQ(Language Integrated Query)
- Language-Integrated Query
- LINQ,.NET语言级集成查询能力(.NET Language Integrated Query)
- SQLServer(Structured Query Language) 2000简介
- linq 1 - linq简介
- Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)
- HQL(Hibernate Query Language)
- Structured Query Language (SQL)
- Hibernate Query Language (HQL)
- 基础命令补充 --vim 搞起之史
- java基础语法学习笔记(六)
- 驱动版Hello World - CSDNBlog
- C 语言编程之道 (CSDN)
- javascript中的setInterval()方法
- LINQ(Language Integrated Query)(1):简介
- 后缀数组
- 字符编码笔记:ASCII,Unicode和UTF-8
- Windows文件系统过滤驱动开发教程-楚狂人
- c++适合使用的时机
- 内核驱动主要数据结构
- 最大公约数问题
- 编程之美--3.5最短摘要生成
- Android 图片旋转,缩放,切割,叠加处理