标准查询操作符简介
为了查看执行中的语言集成查询,我们将从一个简单的 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);
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
如果您编译并运行该程序,将看到以下输出:
BURKE
DAVID
FRANK
- 1.
- 2.
- 3.
标准查询操作符工作原理
要了解语言集成查询如何工作,我们需要剖析该程序的第一个语句。
IEnumerable expr = from s in names
where s.Length == 5
orderby s
select s.ToUpper();
- 1.
- 2.
- 3.
- 4.
使用一个查询表达式 初始化局部变量 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
- 1.
- 2.
- 3.
- 4.
- 5.
这里显示的 C# 和 Visual Basic 语句均使用查询语法。与 foreach 语句一样,查询语法是一个方便的声明性代码缩写,您可以手动编写它。上述语句在语义上与以下所示的以 C# 编写的显式语法完全相同:
IEnumerable expr = names
.Where(s => s.Length == 5)
.OrderBy(s => s)
.Select(s => s.ToUpper());
- 1.
- 2.
- 3.
- 4.
Where、OrderBy 和 Select 操作符的参数称为 λ 表达式,它们是类似于委托的代码片段。它们允许将标准查询操作符单独定义为方法,并使用点标记串连在一起。这些方法共同构成了可扩展查询语言的基础。
【编辑推荐】