查詢語法和方法語法

查詢語法和方法語法在語義上是相同的,但許多人發現查詢語法更簡單,更易於閱讀。假設我們需要從一組數字中檢索按升序排序的所有偶數項。

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();