查询语法和方法语法在语义上是相同的,但是许多人发现查询语法更简单易读。假设我们需要从一组数字中检索升序排列的所有偶数项。
C#:
int[] numbers = { 0, 1, 2, 3, 4, 5, 6 }; // 查询语法: IEnumerable<int> numQuery1 = from num in numbers where num % 2 == 0 orderby num select num; // 方法语法: 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();