乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      LINQ教程二:LINQ操作語法

       張小龍net館藏 2018-01-31

      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á)式

      約束 LINQ查詢表達(dá)式必須以from子句開頭,以select或group子句介紹
      關(guān)鍵字 功能
      from....in...

      指定要查詢的數(shù)據(jù)源以及范圍變量,多個(gè)from子句則表示從多個(gè)數(shù)據(jù)源查找數(shù)據(jù)。注意:C#編譯器會(huì)把“復(fù)合from子句”的查詢表達(dá)式轉(zhuǎn)換為SelectMany()擴(kuò)展方法。

      join…in…on…equals… 指定多個(gè)數(shù)據(jù)源的關(guān)聯(lián)方式
      let 引入用于存儲(chǔ)查詢表達(dá)式中子表達(dá)式結(jié)果的范圍變量。通常能達(dá)到層次感會(huì)更好,使代碼更易于閱讀。
      orderby、descending 指定元素的排序字段和排序方式。當(dāng)有多個(gè)排序字段時(shí),由字段順序確定主次關(guān)系,可指定升序和降序兩種排序方式
      where 指定元素的篩選條件。多個(gè)where子句則表示了并列條件,必須全部都滿足才能入選。每個(gè)where子句可以使用謂詞&&、||連接多個(gè)條件表達(dá)式。
      group 指定元素的分組字段。
      select 指定查詢要返回的目標(biāo)數(shù)據(jù),可以指定任何類型,甚至是匿名類型。(目前通常被指定為匿名類型)
      into

      提供一個(gè)臨時(shí)的標(biāo)識(shí)符。該標(biāo)識(shí)可以引用join、group和select子句的結(jié)果。

      1)        直接出現(xiàn)在join子句之后的into關(guān)鍵字會(huì)被翻譯為GroupJoin。(into之前的查詢變量可以繼續(xù)使用)

      2)        select或group子句之后的into它會(huì)重新開始一個(gè)查詢,讓我們可以繼續(xù)引入where, orderby和select子句,它是對(duì)分步構(gòu)建查詢表達(dá)式的一種簡(jiǎn)寫方式。(into之前的查詢變量都不可再使用)

      查詢語法從一個(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)系
      1、CLR本身并不理解查詢表達(dá)式語法,它只理解方法語法。
      2、編譯器負(fù)責(zé)在編譯時(shí)將查詢表達(dá)式語法翻譯為方法語法。
      3、大部分方法語法都有對(duì)應(yīng)的查詢表達(dá)式語法形式:如Select()對(duì)應(yīng)select、OrderBy()對(duì)應(yīng)orderby
      4、部分查詢方法目前在C#中還沒有對(duì)應(yīng)的查詢語句:如Count()和Max(),這是只能采用以下替代方案:
        方法語法
        查詢表達(dá)式語法+方法語法的混合方式

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多