定义
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称,可总结为linq=c#+sql。
优势
可用类似于数据库查询语言的方式去操作c#的对象。在linq出来之前,对象的很多操作都要自己去写方法和逻辑(如排序,过滤,分组等),而用linq往往只要一句话就可以完成之前几十行代码的功能!
写法
分查询语法和方法语法
查询语法:var query=from user in users where user.Name=='周晶' select user;
方法语句:var query=users.where(user=>user.Name=='周晶').select(user=>user)
开发和学习中的陷阱
linq分linq to objects,linq to xml,linq to ado.net。三都的底层技术原理是不一样的,所以同样的写法可能在linq to objects会正常但在linq to ado.net时就不正常。
几点建议
复杂的查询用查询语法,简单的查询用方法语法。
什么样的数据源能用linq技术?
只要是实现 IEnumerable<T> 或 IQueryable<T> 接口的数据源都可以用。
查询表达式的语法
查询表达式必须以 from 子句开头,且必须以 select 或 group 子句结尾。 在第一个 from 子句与最后一个 select 或 group 子句之间,可以包含以下这些可选子句中的一个或多个:where、orderby、join、let,甚至是其他 from 子句。 还可以使用 into 关键字,使 join 或 group 子句的结果可以充当相同查询表达式中的其他查询子句的源。
其它
创建查询表达式时,并不会有什么计算的开销,只有在foreach或是其它的计算结果的语句执行时(如count,max等),才会真正去执行计算任务。