LINQ查詢時(shí)有兩種語法可供選擇:查詢表達(dá)式語法(Query Expression)和方法語法(Fluent Syntax)。 一、查詢表達(dá)式語法 查詢表達(dá)式語法是一種更接近SQL語法的查詢方式。 LINQ查詢表達(dá)式語法如下: 1 from<range variable> in <IEnumerable<T> or IQueryable<T> Collection> 2 <Standard Query Operators> <lambda expression> 3 <select or groupBy operator> <result formation> LINQ查詢表達(dá)式
查詢語法從一個(gè)From子句開始,然后是一個(gè)Range變量。 From子句的結(jié)構(gòu)類似于“From rangeVariableName in IEnumerablecollection”。 在英語中,這意味著,從集合中的每個(gè)對(duì)象。 它類似于foreach循環(huán):foreach(student in studentList)。 在From子句之后,您可以使用不同的標(biāo)準(zhǔn)查詢運(yùn)算符來過濾,分組,連接集合的元素。 LINQ中有大約50個(gè)標(biāo)準(zhǔn)查詢運(yùn)算符。標(biāo)準(zhǔn)查詢運(yùn)算符后面通常跟一個(gè)條件,這個(gè)條件通常使用lambda表達(dá)式來表示。 LINQ查詢語法總是以Select或Group子句結(jié)束。 Select子句用于對(duì)數(shù)據(jù)進(jìn)行整形。 您可以選擇整個(gè)對(duì)象,因?yàn)樗腔蛑挥兴囊恍傩浴?在上面的例子中,我們選擇了每個(gè)結(jié)果字符串元素。 例如:我們要從數(shù)組中查詢出偶數(shù),查詢表達(dá)式示例代碼如下: var result = from p in ints where p % 2 == 0 select p; 查詢表達(dá)式語法要點(diǎn)總結(jié): 1、查詢表達(dá)式語法與SQL(結(jié)構(gòu)查詢語言)語法相同。 2、查詢語法必須以from子句開頭,可以以Select或GroupBy子句結(jié)束 。 3、使用各種其他操作,如過濾,連接,分組,排序運(yùn)算符以構(gòu)造所需的結(jié)果。 4、隱式類型變量 - var可以用于保存LINQ查詢的結(jié)果。 二、方法語法 方法語法(也稱為流利語法)主要利用System.Linq.Enumerable類中定義的擴(kuò)展方法和Lambda表達(dá)式方式進(jìn)行查詢,類似于如何調(diào)用任何類的擴(kuò)展方法。 以下是一個(gè)示例LINQ方法語法的查詢,返回?cái)?shù)組中的偶數(shù): var result = ints.Where(p => p % 2 == 0).ToArray(); 從上面的示例代碼中可以看出:方法語法包括擴(kuò)展方法和Lambda表達(dá)式。 擴(kuò)展方法Where()在Enumerable類中定義。 如果你檢查Where擴(kuò)展方法的簽名,你會(huì)發(fā)現(xiàn)Where方法接受一個(gè)謂詞委托,如Func <Student,bool>。 這意味著您可以傳遞任何接受Student對(duì)象作為輸入?yún)?shù)的委托函數(shù),并返回一個(gè)布爾值,如下圖所示。 lambda表達(dá)式作為在Where子句中傳遞的委托傳遞。 在下一節(jié)中學(xué)習(xí)lambda表達(dá)式。
三、查詢表達(dá)式語法VS方法語法 查詢表達(dá)式語法與方法語法存在著緊密的關(guān)系
|
|