LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。
LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable<T>接口的源,并且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询操作符集,更重要的是,第三方操作符可以用它们自己的提供附加服务的实现来自由地替换标准查询操作符,根据LINQ模式的习俗,这些查询喜欢采用与标准查询操作符相同的语言集成和工具支持。
下面,我们还是用一个简单的实例说明一下LINQ带来的体验。
Where操作
适用场景:实现过滤,查询等功能。
说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。
Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:
1.简单形式:
例如:使用where筛选在伦敦的客户
var q = from c in db.Customers where c.City == "London" select c;
解释:这里的c其实是db.Customers这个表的别名。from xx in xx where xx select xx是固定形式,和sql中的用法一样。
再如:筛选1994 年或之后雇用的雇员:
var q = from e in db.Employees where e.HireDate >= new DateTime(1994, 1, 1) select e;
2.关系条件形式:
筛选库存量在订货点水平之下但未断货的产品:
var q = from p in db.Products where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued select p;
筛选出UnitPrice 大于10 或已停产的产品:
var q = from p in db.Products where p.UnitPrice > 10m || p.Discontinued select p;
下面这个例子是调用两次where以筛选出UnitPrice大于10且已停产的产品。
var q =
db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued);
解释:其实,这里使用了LIMBDA表达式,p其实指代前边的db.Products 和from p的用法一样。
3.First()形式:
返回集合中的一个元素,其实质就是在SQL语句中加TOP (1)。
简单用法:选择表中的第一个发货方。
Shipper shipper = db.Shippers.First();
元素:选择CustomerID 为“BONAP”的单个客户
Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");
条件:选择运费大于 10.00 的订单:
Order ord = db.Orders.First(o => o.Freight > 10.00M);
好了,从上面大家应该可以简单的看出linq 中的 where 是怎么样用的了吧。如果学习过SQL 的同学应该比较容易理解。