首页 > 代码库 > LINQ学习笔记
LINQ学习笔记
LINQ学习笔记(一)
1、LINQ简介
语言集成查询 (LINQ) 将数据库查询集成到代码中,支持SQL数据库、XML、ADO.NET、.NET以及支持 IEnumerable 或泛型 IEnumerable<T> 接口的任何对象集合数据源的数据访问,避免了以前使用数据库还需学习不同的数据库查询语言,如SQL、ADO.NET、XML等。LINQ查询表达式采用声明式查询语法编写,使用查询表达式时可以使用最少的代码实现数据源筛选、查询和排序操作。 实现跨数据源与数据格式的查询,可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。
例1:完整的数据源创建、查询表达式定义、查询表达式执行的完整过程。
class LINQQueryExpressions
{
static void Main()
{
// Specify the data source.
int[] scores = new int[] { 97, 92, 81, 60 };
// Define the query expression.
IEnumerable<int> scoreQuery =
from score in scores
where score > 80
select score;
// Execute the query.
foreach (int i in scoreQuery)
{
Console.Write(i + " ");
}
}
}
1、数据源
上例中,数据源是一个数组,因此它隐式支持泛型 IEnumerable<T> 接口。 这一事实意味着该数据源可以用 LINQ 进行查询。 查询在 foreach
语句中执行,且 foreach
需要 IEnumerable 或 IEnumerable<T>。 支持 IEnumerable<T> 或派生接口(如泛型 IQueryable<T>)的类型称为可查询类型。
如果数据源还没有加载到内存中,则需要手动加载数据源,例如:
XML数据源
// using System.Xml.Linq;
XElement contacts = XElement.Load(@"c:\myContactList.xml");
mdf数据源其中
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
// Query for customers in London.
IQueryable<Customer> custQuery =
from cust in db.Customers
where cust.City == "London"
select cust;
2、查询
查询就是从数据源中检索信息,查询可以实现在数据返回之前对这些数据进行排序、分许和结构化。查询本身并不返回任何数据。
from指定数据源、Where子句指定筛选条件、select指定返回数据的类型
3、查询执行
linq的数据查询过程延迟执行,查询变量本身只存储查询命令,等到访问查询结果集时,才执行实际的查询操作。
2、LINQ特点
1、查询表达式可用于查询并转换所有启用了 LINQ 的数据源中的数据。
2、查询表达式易于掌握,因为使用了许多熟悉的 C# 语言构造。
3、变量都是强类型,在Linq中无需声明变量类型。
4、只有在循环访问查询结果时,才会执行查询。
5、查询表达式可被编译成表达式树或委托,具体视应用查询的类型而定。
LINQ学习笔记