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

LINQ教程之使用Lambda表達式

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

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

一、最基本的Lambda表達式語法如下:

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

說明:

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

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

讓我們看看Lambda表達式是如何從匿名方法演變而來的。

相關示例:

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

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

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

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

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

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

item=>item %2 == 0;

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

item => item % 2 == 0

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

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

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

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

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

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

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

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

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

 四、正文表達式中有多條語句

在前面講過,如果正文表達式有一個語句,那么可以去掉方法體外面的大括號。如果正文表達式中有多條語句,那么必須用大括號將正文表達式括起來,如下所示:

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

 五、表達式中的局部變量

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

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

 六、Lambda表達式中的內置泛型委托

1、Func委托

當你想從lambda表達式返回一些東西時,使用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委托期望第一個輸入?yún)?shù)是int[]類型,返回類型是boolean。Lambda表達式是p => p.Equals(10)。

2、Action委托

與Func委托不同,Action委托只能有輸入?yún)?shù)。 當不需要從lambda表達式返回任何值時,請使用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表達式 

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

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

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表達式要點總結

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

2、Lambda表達式語法:parameters =>正文表達式

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

4、Lambda表達式可以在大括號{}中的正文表達式中有一條或多條語句。 

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

6、Lambda表達式可以以類似的方式調用委托。

到此這篇關于LINQ使用Lambda表達式的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

邹平县| 嘉义市| 菏泽市| 安康市| 长子县| 徐州市| 舒城县| 新密市| 苏尼特右旗| 遵化市| 桂东县| 建昌县| 龙川县| 永丰县| 九寨沟县| 长乐市| 探索| 林甸县| 兰溪市| 沁阳市| 施秉县| 城步| 休宁县| 石棉县| 吉隆县| 西华县| 大英县| 揭阳市| 乐都县| 吴堡县| 峡江县| 五峰| 佛冈县| 和平县| 介休市| 通州区| 天全县| 密云县| 恩施市| 双城市| 新蔡县|