亚洲国内精品自在线影视_大胆日本免费_一级a毛一级a做视频在线观看_亚洲中文无码永久免老牛影视,一级A片免费观看一,岛国av无码网,国产强奸精品,国产精品久久一区二区三区,在线免费电影无码,大黑人交XXXX大黑人交免费看,成年人女人视频

南京軟件定制開發(fā)

南京傾心軟件歡迎您訪問本站

13605185909

新聞資訊

NEWS CENTER
欄目導(dǎo)航

南京軟件開發(fā)之Lambda表達(dá)式

發(fā)布時間:Mar 18, 2021         已有 人瀏覽

       在C#的語法中有一種比較特殊的寫法,,叫做Lambda表達(dá)式,,這種表達(dá)式的寫法在于你查詢數(shù)據(jù)的時候直接是使用以下箭頭的形式來表示查詢語句的:=>。例如,,我們要查找學(xué)生的List<Student>集合中班級編號為1001的所有學(xué)生數(shù)據(jù),,我們即可用Studentlist.Where(t=>t.ClassCode=‘1001’)語句來直接完成,無需再寫繁瑣的foreach語句或者for循環(huán),。Lambda表達(dá)式的運(yùn)算符即為=>,。

一、Lambda表達(dá)式定義

        Lambda表達(dá)式實際上是一種匿名函數(shù),,在Lambda表達(dá)式中可以包含語句以及運(yùn)算等操作,。并且可用于創(chuàng)建委托或表達(dá)式目錄樹類型,支持帶有可綁定到委托或表達(dá)式樹的輸入?yún)?shù)的內(nèi)聯(lián)表達(dá)式,。使用Lambda表達(dá)式可大大減少代碼量,,使得代碼更加的優(yōu)美、簡潔,,更有可觀性,。

 

二、Lambda表達(dá)式的表現(xiàn)形式

       表達(dá)式形式:(Input Param)=>Expression,。在表達(dá)式左側(cè)的表示輸入?yún)?shù),右側(cè)的為相應(yīng)的運(yùn)算語句或者判斷語句等,,可包含函數(shù)調(diào)用等復(fù)雜方式,。運(yùn)算符=>讀作為goes to,例如下面這個表達(dá)t=>t.ClassCode='1001',,多做goes to ClassCode equal 1001,。

       在上述的表達(dá)式中,僅僅只有當(dāng)參數(shù)只有一個的時候,,括號是可選擇的,,例如下面這種含有兩個參數(shù)時候的情況應(yīng)該是這樣子的寫法

1
(a,b)=>a==b

  當(dāng)表達(dá)式中的多個參數(shù)編譯器無法自動判斷類型的時候,則需要顯式指定類型。

1
(int firstIndex, string str) => str.IndexOf('Hello') > firstIndex

 

三,、下面介紹List集合中的Lambda表達(dá)式的運(yùn)用

       在C#的List集合中,,我們時常需要使用到大量的運(yùn)算或者篩選等操作,按常規(guī)的方式無非就是利用foreach或者for對List集合進(jìn)行循環(huán)操作,,最后運(yùn)算出結(jié)果,。此種方法往往需要寫多行語句,閱讀性稍微差點,,當(dāng)然復(fù)雜的情況下編寫也費(fèi)時,。博主遇到這種情況一般比較喜歡偷懶,很少會去直接寫循環(huán),,而是直接使用Lambda表達(dá)式一條語句完成,。

     先假定好我們待會使用的范例的格式:

     studentList對象:此對象是一個List集合,集合中的對象為學(xué)生實體Student,。此集合中存放著整個學(xué)校學(xué)生的信息,。

     scoreList對象:此對象是個List集合,集合中的對象是成績實體Score,,此集合中存放著為學(xué)生的成績信息,。

     Student實體:此實體包含下列幾個屬性,StudentName,,StudentCode,,ClassCode,ClassName,,BirthDay,,Grade。以上幾個英文單詞都比較簡單,,就不做解釋了,。

     Score實體:此實體包含下列幾個屬性,StudentCode,SubjectName(科目名稱),ScoreValue(分?jǐn)?shù),,0-100的數(shù)字),。一個學(xué)生可能有多門成績數(shù)據(jù)存放在此。

    (1)查詢班級編號為1001的班級下面的所有學(xué)生實體并返回到list1001中存儲

1
var list1001=Studentlist.Where(t=>t.ClassCode==‘1001’),;

 (2)查詢班級編號為1001的班級下面的所有學(xué)生實體并返回到list1001中存儲,,并按照學(xué)生的出生日期從小到大排列。

1
var list1001=Studentlist.Where(t=>t.ClassCode==‘1001’).OrderBy(t=>t.BirthDay),;

   在此說一下,,OrderBy是從小到大排序,需要從大到小排列則用OrderByDescending,。

 (3)查詢班級編號為1001的班級下面的姓氏為【李】的同學(xué)的所有集合,,并按照學(xué)生的出生日期從小到大排列,。

1
var list1001=Studentlist.Where(t=>t.ClassCode==‘1001’&&t.StudentName.StartWith(“李”)).OrderBy(t=>t.BirthDay);

 (4)查詢出班級編號為1001的班級,,并且存在至少一門考試科目成績低于60分的所有同學(xué),。

1
var result = studentList.Where(t => (t.ClassCode == "1001") && (scoreList.Exists(p => p.ScoreValue < 60 && p.StudentCode == t.StudentCode)));

  在上述語句中,lambda表達(dá)式中再次嵌入了一個lambda表達(dá)式,。t參數(shù)是studentList中的lambda表達(dá)式參數(shù),,代表實體為student。p參數(shù)為scoreList中的lambda表達(dá)式參數(shù),,代表的實體為score,。

   (5)其他較常用的Lambda表達(dá)式如下:

復(fù)制代碼
 var a = studentList.FirstOrDefault(t => t.StudentCode == "10012");//FirstOrDefault返回第一個符合條件的數(shù)據(jù),不存在的時候返回Null,。
 var b = studentList.Count(t => t.StudentName == "傾心");//返回符合條件的實體個數(shù)
 var c = studentList.FindAll(t => t.StudentName.Contains(""));//查找所有名字中含有【中】的實體集合
 var d = studentList.GroupBy(t => t.ClassCode);//對studentList按照ClassCode分組
 var f = studentList.Max(t => t.BirthDay);//返回最大的出生日期,。
 var e = scoreList.Sum(t => t.ScoreValue);//對所有成績求和
 var g = scoreList.Average(t => t.ScoreValue);//對所有成績求平均分
 var h = studentList.Select(t => t.StudentName).Distinct();//獲取所有的學(xué)生姓名,并去除重名
復(fù)制代碼

 

    Lambda表達(dá)式的總結(jié)大致如此,,從上述例子來看,,可以大大簡化代碼的量,并增加可讀性,。

Copyright © 2020-2022 南京傾心軟件技術(shù)有限公司 版權(quán)所有     蘇ICP備2020070309號-1
QQ在線咨詢
13605185909
返回頂部