c# in deep 之LINQ简介(1)

时间:2022-12-20 16:57:08

前两天公司进了一批书,在借阅jon skeet的c# in deep收获颇大,本书特点是介绍了不同版本的c#所增加的新特性。今天先写一下书中对linq的描述。

很多初学者在使用VS2010或2013写代码时都会看见软件会自动帮我们引用linq这个命名空间,而不知其作用。linq全称为language integrated query,即语言集成查询,是c#3的核心所在,可使对多数据源的查询变得简单。

比如一段代码有一个Products类,其包含Name和Price两个属性。我们现在需要在原基础上增加一个suppliers类,其包含Name和SupplierID两个属性,这样需要在Products类中也增加SupplierID这一属性。假设需要筛选价格高于10的产品,结果先按供货商名进行排序,再按产品名排序,最后打印供货商名和产品名。若是不使用linq可能需要很多代码才能实现,现在我们用linq来实现这一功能。

var filtered =from p in Products join s in Suppliers

on p.SupplierID equals s.SupplierID where p.Price>10 orderby s.Name,p.Name

select new{SupplierName=s.Name, ProductName=p.Name}

foreach(var v in filtered)

{Console.WriteLine("Supplier={0}---Product={1}",v.SupplierName,v.ProductName);}

通过这段代码,我们会发现,这和SQL语言太像了,这大大降低了我们使用linq的难度。下章介绍一下使用linq读取xml。