標(biāo)準(zhǔn)查詢操作符概述及剖析
標(biāo)準(zhǔn)查詢操作符簡介
為了查看執(zhí)行中的語言集成查詢,我們將從一個(gè)簡單的 C# 3.0 程序開始,該程序使用標(biāo)準(zhǔn)的查詢操作符來處理數(shù)組的內(nèi)容:
- 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);
- }
- }
如果您編譯并運(yùn)行該程序,將看到以下輸出:
- BURKE
- DAVID
- FRANK
標(biāo)準(zhǔn)查詢操作符工作原理
要了解語言集成查詢?nèi)绾喂ぷ鳎覀冃枰饰鲈摮绦虻牡谝粋€(gè)語句。
- IEnumerable expr = from s in names
- where s.Length == 5
- orderby s
- select s.ToUpper();
使用一個(gè)查詢表達(dá)式 初始化局部變量 expr。通過應(yīng)用一個(gè)或多個(gè)標(biāo)準(zhǔn)查詢操作符或特定于域的操作符,查詢表達(dá)式可以操作一個(gè)或多個(gè)信息源。該表達(dá)式使用了三個(gè)標(biāo)準(zhǔn)查詢操作符: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 語句一樣,查詢語法是一個(gè)方便的聲明性代碼縮寫,您可以手動(dòng)編寫它。上述語句在語義上與以下所示的以 C# 編寫的顯式語法完全相同:
- IEnumerable expr = names
- .Where(s => s.Length == 5)
- .OrderBy(s => s)
- .Select(s => s.ToUpper());
Where、OrderBy 和 Select 操作符的參數(shù)稱為 λ 表達(dá)式,它們是類似于委托的代碼片段。它們?cè)试S將標(biāo)準(zhǔn)查詢操作符單獨(dú)定義為方法,并使用點(diǎn)標(biāo)記串連在一起。這些方法共同構(gòu)成了可擴(kuò)展查詢語言的基礎(chǔ)。
【編輯推薦】