查询语法和方法语法
查询语法和方法语法在语义上是相同的,但许多人发现查询语法更简单,更易于阅读。假设我们需要从一组数字中检索按升序排序的所有偶数项。
C#:
int[] numbers = { 0, 1, 2, 3, 4, 5, 6 };
// Query syntax:
IEnumerable<int> numQuery1 =
from num in numbers
where num % 2 == 0
orderby num
select num;
// Method syntax:
IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);
VB.NET:
Dim numbers() As Integer = { 0, 1, 2, 3, 4, 5, 6 }
' Query syntax: '
Dim numQuery1 = From num In numbers
Where num Mod 2 = 0
Select num
Order By num
' Method syntax: '
Dim numQuery2 = numbers.where(Function(num) num Mod 2 = 0).OrderBy(Function(num) num)
请记住,某些查询必须表示为方法调用。例如,必须使用方法调用来表示检索与指定条件匹配的元素数的查询。你还必须对查询使用方法调用,以检索源序列中具有最大值的元素。因此,使用方法语法使代码更加一致可能是一个优势。但是,当然你可以在查询语法调用后始终应用该方法:
C#:
int maxNum =
(from num in numbers
where num % 2 == 0
select num).Max();
VB.NET:
Dim maxNum =
(From num In numbers
Where num Mod 2 = 0
Select num).Max();