LINQ解析
1、什么是LINQ?
LINQ是语言集成查询的缩写(Language Integrated Query)。做软件开发肯定是离不开数据库的,里面有各种查询语句。LINQ的提出就是为了提供一种跨越各种数据源的统一查询方式-它主要包含4个组件-Linq to Objects,Linq to XML,Linq to DataSet和Linq to SQL.
Linq to SQL:可以查询基于关系数据库的数据。微软只实现了SQLServer的查询等操作。其他的第三方也实现了很多。
Linq to DataSet: 查询DataSet中的数据,并能对数据进行增删等操作。
Linq to XML:该组件可以查询XML文件。
Linq to Objects:可以查询集合数据,如数组或List等。
eg:
这是一个最简单的Linq查询的使用方式。可以很方便的对数据进行筛选。查询表达式必须以from子句开头,并且必须以select或者group子句结尾,在其之间,可以包含一个或者多个where语句、orderby语句、join语句。形式类似于SQL语言。下面给出示例:
var queryExp=from s in collection
select s;
2.使用LINQ查询Objects集合
在LINQ出现之前,我们查询数据一般要使用for或者foreach语句,但是这两种方式不如LINQ简洁,如下代码。
可以看到使用它之后,代码更加简洁了。并且还可以添加其他的条件。建议我们都使用它去查询对象。
3 使用LINQ XML查询XML文件
在LINQ出现之前,我们使用XPath来查询XML文件,但是使用XPath必须首先知道其具体结构。而使用LinQ则不需要知道这些,代码更加简洁。下面分别讲解其内容。
代码变的异常简单,只需要一个查询表达式即可。不需要知道文件的路径结构,也不需要过多的if语句。Linq To Sql就不再细说了,本身内容就够一本书了,LinqToDataSet与object类似,不再叙述。
4 查询语句实例
检索一个元素子集以产生一个新序列,但不修改单个元素。然后,查询可以按各种方式对返回的序列进行排序或分组,如下面的示例所示(假定 scores 是 int[]):
如上一个示例所述检索一个元素序列,但是将这些元素转换为具有新类型的对象。例如,查询可以只从数据源中的某些客户记录检索姓氏。或者,查询可以检索完整的记录,再使用它构建另一个内存中对象类型甚至 XML 数据,然后生成最终的结果序列。下面的示例演示了从 int 到 string 的转换。请注意 highScoresQuery 的新类型。
检索有关源数据的单一值,例如:
符合某个条件的元素的数量。
具有最大值或最小值的元素。
符合某个条件的第一个元素,或一组指定元素中的特定值之和。
例如,下面的查询从 scores 整数数组中返回高于 80 的分数的数量。
在上一个示例中,请注意在 Count 方法调用之前的查询表达式两旁使用了括号。另一种表示方式是使用一个新变量来存储具体结果。此技术的可读性更好,因为它将存储查询的变量与存储结果的查询区分开来。
在上一个示例中,查询是在 Count 调用中执行的,因为 Count必须循环访问结果以便确定 highScoresQuery 返回的元素数量。