标准查询操作符简介
为了查看执行中的语言集成查询,我们将从一个简单的 C# 3.0 程序开始,该程序使用标准的查询操作符来处理数组的内容:
- using System;
- using System.Query;
- using System.Collections.Generic;
- class app {
- static void Main() {
- string[] names = { "Burke", "Connor", "Frank",
- "Everett", "Albert", "George",
- "Harris", "David" };
- IEnumerable expr = from s in names
- where s.Length == 5
- orderby s
- select s.ToUpper();
- foreach (string item in expr)
- Console.WriteLine(item);
- }
- }
如果您编译并运行该程序,将看到以下输出:
- BURKE
- DAVID
- FRANK
标准查询操作符工作原理
要了解语言集成查询如何工作,我们需要剖析该程序的第一个语句。
- IEnumerable expr = from s in names
- where s.Length == 5
- orderby s
- select s.ToUpper();
使用一个查询表达式 初始化局部变量 expr。通过应用一个或多个标准查询操作符或特定于域的操作符,查询表达式可以操作一个或多个信息源。该表达式使用了三个标准查询操作符:Where、OrderBy 和 Select。
Visual Basic 9.0 也支持 LINQ。以下是以 Visual Basic 9.0 编写的上述语句:
- Dim expr As IEnumerable(Of String) = _
- Select s.ToUpper() _
- From s in names _
- Where s.Length = 5 _
- Order By s
这里显示的 C# 和 Visual Basic 语句均使用查询语法。与 foreach 语句一样,查询语法是一个方便的声明性代码缩写,您可以手动编写它。上述语句在语义上与以下所示的以 C# 编写的显式语法完全相同:
- IEnumerable expr = names
- .Where(s => s.Length == 5)
- .OrderBy(s => s)
- .Select(s => s.ToUpper());
Where、OrderBy 和 Select 操作符的参数称为 λ 表达式,它们是类似于委托的代码片段。它们允许将标准查询操作符单独定义为方法,并使用点标记串连在一起。这些方法共同构成了可扩展查询语言的基础。
【编辑推荐】