最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

LINQ教程之LINQ操作語法

 更新時間:2022年03月07日 11:45:19   作者:.NET開發(fā)菜鳥  
本文詳細(xì)講解了LINQ的操作語法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

LINQ查詢時有兩種語法可供選擇:查詢表達(dá)式語法(Query Expression)和方法語法(Fluent Syntax)。

一、查詢表達(dá)式語法

查詢表達(dá)式語法是一種更接近SQL語法的查詢方式。

LINQ查詢表達(dá)式語法如下:

from<range variable> in <IEnumerable<T> or IQueryable<T> Collection>
<Standard Query  Operators> <lambda expression>
<select or groupBy operator> <result   formation>

LINQ查詢表達(dá)式

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

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

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

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

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

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

查詢語法從一個From子句開始,然后是一個Range變量。 From子句的結(jié)構(gòu)類似于“From rangeVariableName in IEnumerablecollection”。 在英語中,這意味著,從集合中的每個對象。 它類似于foreach循環(huán):foreach(student in studentList)。

在From子句之后,您可以使用不同的標(biāo)準(zhǔn)查詢運(yùn)算符來過濾,分組,連接集合的元素。 LINQ中有大約50個標(biāo)準(zhǔn)查詢運(yùn)算符。標(biāo)準(zhǔn)查詢運(yùn)算符后面通常跟一個條件,這個條件通常使用lambda表達(dá)式來表示。

LINQ查詢語法總是以Select或Group子句結(jié)束。 Select子句用于對數(shù)據(jù)進(jìn)行整形。 您可以選擇整個對象,因?yàn)樗腔蛑挥兴囊恍傩浴?在上面的例子中,我們選擇了每個結(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ò)展方法。

以下是一個示例LINQ方法語法的查詢,返回數(shù)組中的偶數(shù):

var result = ints.Where(p => p % 2 == 0).ToArray();

從上面的示例代碼中可以看出:方法語法包括擴(kuò)展方法和Lambda表達(dá)式。 擴(kuò)展方法Where()在Enumerable類中定義。

如果你檢查Where擴(kuò)展方法的簽名,你會發(fā)現(xiàn)Where方法接受一個謂詞委托,如Func <Student,bool>。 這意味著您可以傳遞任何接受Student對象作為輸入?yún)?shù)的委托函數(shù),并返回一個布爾值,如下圖所示。 lambda表達(dá)式作為在Where子句中傳遞的委托傳遞。 在下一節(jié)中學(xué)習(xí)lambda表達(dá)式。

三、查詢表達(dá)式語法VS方法語法

查詢表達(dá)式語法與方法語法存在著緊密的關(guān)系
1、CLR本身并不理解查詢表達(dá)式語法,它只理解方法語法。
2、編譯器負(fù)責(zé)在編譯時將查詢表達(dá)式語法翻譯為方法語法。
3、大部分方法語法都有對應(yīng)的查詢表達(dá)式語法形式:如Select()對應(yīng)select、OrderBy()對應(yīng)orderby
4、部分查詢方法目前在C#中還沒有對應(yīng)的查詢語句:如Count()和Max(),這是只能采用以下替代方案:
  方法語法
  查詢表達(dá)式語法+方法語法的混合方式

到此這篇關(guān)于LINQ操作語法的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用最小?WEB?API?實(shí)現(xiàn)文件上傳的Swagger支持

    使用最小?WEB?API?實(shí)現(xiàn)文件上傳的Swagger支持

    這篇文章主要介紹了使用最小?WEB?API?實(shí)現(xiàn)文件上傳Swagger支持,我們使用最小?WEB?API?實(shí)現(xiàn)文件上傳功能,雖然客戶端訪問是正常的,但是當(dāng)打開?Swagger?頁面時,沒法使用?Swagger?頁面測試,下面就來一篇支持Swagger的,需要的小伙伴可以參考一下
    2022-02-02
  • 基于.net standard 的動態(tài)編譯實(shí)現(xiàn)代碼

    基于.net standard 的動態(tài)編譯實(shí)現(xiàn)代碼

    這篇文章主要介紹了基于.net standard 的動態(tài)編譯實(shí)現(xiàn)代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 快速入門ASP.NET Core看這篇就夠了

    快速入門ASP.NET Core看這篇就夠了

    ASP.NET Core 是一個由微軟創(chuàng)建的,用于構(gòu)建 web 應(yīng)用、API、微服務(wù) 的 web 框架。通過本文的學(xué)習(xí)就能快速的入門ASP.NET Core,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • .NET6創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)步驟

    .NET6創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)步驟

    本文主要介紹了.NET6創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 解析ABP框架中的數(shù)據(jù)傳輸對象與應(yīng)用服務(wù)

    解析ABP框架中的數(shù)據(jù)傳輸對象與應(yīng)用服務(wù)

    ABP框架是基于ASP.NET的Web開發(fā)框架,在ABP中應(yīng)用服務(wù)將領(lǐng)域邏輯暴露給展現(xiàn)層,展現(xiàn)層通過傳入數(shù)據(jù)傳輸對象參數(shù)來調(diào)用應(yīng)用服務(wù),而這里我們就來解析ABP框架中的數(shù)據(jù)傳輸對象與應(yīng)用服務(wù)
    2016-06-06
  • mvc下,3種窗口彈出設(shè)置的方法

    mvc下,3種窗口彈出設(shè)置的方法

    想做頁面美化,特別是在一個頁面中,只占了很小一塊的頁面,想做成彈出窗口樣式,稍微總結(jié)了下:
    2013-07-07
  • ASP.NET?MVC開發(fā)接入微信公共平臺

    ASP.NET?MVC開發(fā)接入微信公共平臺

    這篇文章主要為大家介紹了微信平臺開發(fā)ASP.NET?MVC接入微信公共平臺實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • ASP.NET WebForms實(shí)現(xiàn)全局異常捕獲與處理的最佳實(shí)踐

    ASP.NET WebForms實(shí)現(xiàn)全局異常捕獲與處理的最佳實(shí)踐

    文章介紹了在ASP.NET WebForms中實(shí)現(xiàn)全局異常捕獲與處理的最佳實(shí)踐,包括在Global.asax中使用Application_Error、在Web.config中配置customErrors、在代碼中使用try-catch、全局異常過濾以及使用日志記錄庫等方法,感興趣的朋友一起看看吧
    2025-01-01
  • .NET?Core基于EMIT編寫的輕量級AOP框架CZGL.AOP

    .NET?Core基于EMIT編寫的輕量級AOP框架CZGL.AOP

    這篇文章介紹了.NET?Core基于EMIT編寫的輕量級AOP框架CZGL.AOP,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • ASP.NET網(wǎng)站的創(chuàng)建與發(fā)布過程簡析

    ASP.NET網(wǎng)站的創(chuàng)建與發(fā)布過程簡析

    這篇文章主要介紹了ASP.NET的創(chuàng)建與發(fā)布過程,過程實(shí)現(xiàn)很簡單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-08-08

最新評論

修文县| 黑水县| 青海省| 万载县| 中西区| 墨玉县| 昌黎县| 定州市| 裕民县| 达州市| 西吉县| 岳池县| 六安市| 台安县| 禄劝| 沙田区| 古蔺县| 攀枝花市| 岚皋县| 呈贡县| 大埔县| 济南市| 乌拉特后旗| 黑龙江省| 山丹县| 南充市| 益阳市| 贵溪市| 河津市| 黄陵县| 泰顺县| 迁安市| 永春县| 房山区| 桂平市| 五常市| 南漳县| 陵水| 连云港市| 彰化县| 政和县|