亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

LINQ教程之使用Lambda表達(dá)式

 更新時(shí)間:2022年03月07日 14:15:30   作者:.NET開發(fā)菜鳥  
本文詳細(xì)講解了LINQ使用Lambda表達(dá)式的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

C#3.0(.NET3.5)中引入了Lambda表達(dá)式和LINQ。Lambda表達(dá)式是使用一些特殊語(yǔ)法表示匿名方法的較短方法。

一、最基本的Lambda表達(dá)式語(yǔ)法如下:

(參數(shù)列表)=>{方法體}

說明:

1、參數(shù)列表中的參數(shù)類型可以是明確類型或者推斷類型。

2、如果是推斷類型,則參數(shù)的數(shù)據(jù)類型將由編輯器根據(jù)上下文自動(dòng)推斷出來(lái)。

讓我們看看Lambda表達(dá)式是如何從匿名方法演變而來(lái)的。

相關(guān)示例:

delegate(int item) { return item % 2 == 0; };

 1、Lambda表達(dá)式從匿名方法演變,首先刪除delegate關(guān)鍵字和參數(shù)類型并添加Lambda運(yùn)算符=>,演變后的代碼如下:

(item)=>{return item % 2 == 0;};

 2、如果我們只有一個(gè)返回值的語(yǔ)句,那么我們不需要花括號(hào)、返回和分號(hào),所以我們可以去掉這些符號(hào),演變后的代碼如下:

(item)=>item %2 == 0;

 3、如果我們只有一個(gè)參數(shù),我們也可以刪除(),代碼如下:

item=>item %2 == 0;

 因此,我們得到如下所示的Lambda表達(dá)式:

item => item % 2 == 0

其中item是參數(shù),=>是Lambda運(yùn)算符,item % 2 == 0是正文表達(dá)式。

二、具有多個(gè)參數(shù)的Lambda表達(dá)式

如果需要傳遞多個(gè)參數(shù),那么必須將參數(shù)括在括號(hào)內(nèi),如下所示:

(ints, item) => ints.Contains(item);

 如果不想使用推斷類型,那么可以給出每個(gè)參數(shù)的類型,如下所示:

(int[] ints, int item) => ints.Contains(item)

 三、不帶任何參數(shù)的Lambda表達(dá)式

在Lambda表達(dá)式中可以沒有參數(shù),如下所示:

() => Console.WriteLine("這是一個(gè)不帶任何參數(shù)的Lambda表達(dá)式");

 四、正文表達(dá)式中有多條語(yǔ)句

在前面講過,如果正文表達(dá)式有一個(gè)語(yǔ)句,那么可以去掉方法體外面的大括號(hào)。如果正文表達(dá)式中有多條語(yǔ)句,那么必須用大括號(hào)將正文表達(dá)式括起來(lái),如下所示:

(ints, item) =>
{
        Console.WriteLine("這是包含多條語(yǔ)句的Lambda表達(dá)式");
        return ints.Contains(item);
};

 五、表達(dá)式中的局部變量

你可以在表達(dá)式的主體中聲明一個(gè)變量,以便在表達(dá)式主體的任何位置使用它,如下所示:

ints => 
{
    int item = 10;
    return ints.Contains(item);
};

 六、Lambda表達(dá)式中的內(nèi)置泛型委托

1、Func委托

當(dāng)你想從lambda表達(dá)式返回一些東西時(shí),使用Func <> delegate。 

其中T是輸入?yún)?shù)的類型,TResult是返回類型。

示例代碼如下:

Func<int[], bool> isContains = p => p.Equals(10);
int[] ints = { 5, 2, 0, 66, 4, 32, 7, 1 };
bool isEquals = isContains(ints);

在上面的例子中,F(xiàn)unc委托期望第一個(gè)輸入?yún)?shù)是int[]類型,返回類型是boolean。Lambda表達(dá)式是p => p.Equals(10)。

2、Action委托

與Func委托不同,Action委托只能有輸入?yún)?shù)。 當(dāng)不需要從lambda表達(dá)式返回任何值時(shí),請(qǐng)使用Action委托類型。

示例代碼如下:

Action<int[]> PrintItem = p =>
{
       foreach (int item in p)
       {
             Console.WriteLine(item);
       }
};
int[] ints = { 5, 2, 0, 66, 4, 32, 7, 1 };
PrintItem(ints);

七、在LINQ中使用Lambda表達(dá)式 

通常情況下,Lambda表達(dá)式與LINQ查詢一起使用。枚舉靜態(tài)類包括接受Func <TSource,bool>的IEnumerable <T>的Where擴(kuò)展方法。IEnumerable <Int>集合的Where()擴(kuò)展方法需要傳遞Func <Student,bool>,如下所示:

現(xiàn)在,您可以將分配給Func委托的lambda表達(dá)式傳遞給方法語(yǔ)法中的Where()擴(kuò)展方法,如下所示:

Func<int, bool> isContains = p =>p.Equals (4);
int[] ints = { 5, 2, 0, 66, 4, 32, 7, 1 };
var result = ints.Where(isContains).ToList();

 八、Lambda表達(dá)式要點(diǎn)總結(jié)

1、Lambda表達(dá)式是一種表示匿名方法的更短的方法。 

2、Lambda表達(dá)式語(yǔ)法:parameters =>正文表達(dá)式

3、Lambda表達(dá)式可以在()中具有零個(gè)或多個(gè)參數(shù)。 

4、Lambda表達(dá)式可以在大括號(hào){}中的正文表達(dá)式中有一條或多條語(yǔ)句。 

5、Lambda表達(dá)式可以分配給Func,Action或Predicate委托。

6、Lambda表達(dá)式可以以類似的方式調(diào)用委托。

到此這篇關(guān)于LINQ使用Lambda表達(dá)式的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何在.NET Core應(yīng)用中使用NHibernate詳解

    如何在.NET Core應(yīng)用中使用NHibernate詳解

    NHibernate 是一個(gè)基于.Net 的針對(duì)關(guān)系型數(shù)據(jù)庫(kù)的對(duì)象持久化類庫(kù)。下面這篇文章主要給大家介紹了關(guān)于如何在.NET Core應(yīng)用中使用NHibernate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • 手把手教你在.NET中創(chuàng)建Web服務(wù)實(shí)現(xiàn)方法

    手把手教你在.NET中創(chuàng)建Web服務(wù)實(shí)現(xiàn)方法

    這篇文章主要介紹了.NET中創(chuàng)建Web服務(wù)實(shí)現(xiàn)方法,有需要的朋友可以參考一下
    2013-12-12
  • ASP.NET MVC視圖尋址

    ASP.NET MVC視圖尋址

    這篇文章介紹了ASP.NET MVC視圖尋址的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • .NET實(shí)現(xiàn)工資管理系統(tǒng)

    .NET實(shí)現(xiàn)工資管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了.NET實(shí)現(xiàn)工資管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 集合類Array List HashTable實(shí)例操作練習(xí)

    集合類Array List HashTable實(shí)例操作練習(xí)

    集合常用操作添加、遍歷、移除;本文將詳細(xì)介紹下ArrayList對(duì)值類型的操作/ArrayList對(duì)引用類型的操作及HashTable的使用,感興趣的你可不要錯(cuò)過了哈
    2013-02-02
  • .net 應(yīng)對(duì)網(wǎng)站訪問壓力的方案總結(jié)

    .net 應(yīng)對(duì)網(wǎng)站訪問壓力的方案總結(jié)

    本文將總結(jié)下一些應(yīng)對(duì)網(wǎng)站訪問壓力的技術(shù)方案。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過程

    Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過程

    這篇文章主要給大家介紹了關(guān)于在Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • asp.net實(shí)現(xiàn)文件無(wú)刷新上傳方法匯總

    asp.net實(shí)現(xiàn)文件無(wú)刷新上傳方法匯總

    本文給大家介紹的是asp.net實(shí)現(xiàn)文件無(wú)刷新上傳的2種方法,分別是使用swfupload插件和uploadify插件,講述的十分細(xì)致全面,附上示例,有需要的小伙伴可以參考下。
    2015-06-06
  • php使用socket編程示例

    php使用socket編程示例

    這篇文章主要介紹了php使用socket編程的示例,大家參考使用吧
    2014-01-01
  • 解決VS2015中沒有報(bào)表項(xiàng)(ReportViewer)的方法

    解決VS2015中沒有報(bào)表項(xiàng)(ReportViewer)的方法

    VS2015中沒有報(bào)表項(xiàng)(ReportViewer),怎么辦?這篇文章主要為大家詳細(xì)介紹了解決VS2015中沒有報(bào)表項(xiàng)(ReportViewer)的方法,感興趣的小伙伴們可以參考一下
    2016-07-07

最新評(píng)論