.NET中,LINQ数据的基本单位是序列和元素。序列是任何实现了IEnumerable<T>
或者IQueryable<T>
泛型接口的对象,元素是序列中的每一项。
在下面的示例代码中,names
是一个序列,Tom、Dick和Harry是元素:
string[] names = { "Tom", "Dick", "Harry" };
像这样在程序中使用变量定义并存储数据的序列称为局部序列,因为它表示内存中对象的局部集合。
LINQ查询为实现了IEnumerable
或IQueryable
接口的类使用扩展方法。位于System.Linq
命名空间的Enumerable
和Queryable
是两个静态类,它们包含了用于编写LINQ查询的扩展方法。
Enumerable
.NET内置的实现了IEnumerable
接口的类有:
下表列出了Enumerable
静态类所有内置的LINQ静态扩展方法:
Queryable
Queryable
类包含实现了IQueryable<T>
接口的类的扩展方法。IQueryable<T>
接口用于提供针对已知数据类型的特定数据源的查询功能。例如,Entity Framework 的API实现了IQueryable<T>
接口来支持底层数据库(如MS SQL Server)的LINQ查询。
此外,还有一些可以访问第三方数据的API。例如,LINQ to Amazon提供了在亚马逊网络服务中使用LINQ搜索书籍和其他物品的能力。这可以通过为Amazon实现IQueryable接口来实现。
下图是Queryable
静态类中实现了IQueryable
或者IEnumerable
的静态扩展方法:
LINQ查询的语法
在.NET应用程序中,提供了两种基本方法来编写基于IEnumerable
数据集合或基于IQueryable
数据源的LINQ查询,分别为:
- 查询语法或查询表达式语法
- 方法语法或方法扩展语法
接下来将分别介绍查询语法和方法语法的具体使用方法。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册