c#Lambda表達式


       在C#的語法中有一種比較特殊的寫法,叫做Lambda表達式,這種表達式的寫法在於你查詢數據的時候直接是使用以下箭頭的形式來表示查詢語句的:=>。

一、Lambda表達式定義:

     Lambda表達式實際上是一種匿名函數,在Lambda表達式中可以包含語句以及運算等操作。並且可用於創建委托或表達式目錄樹類型,支持帶有可綁定到委托或表達式樹的輸入參數的內聯表達式。使用Lambda表達式可大大減少代碼量,使得代碼更加的優美、簡潔,更有可觀性。

二、下面介紹List集合中的Lambda表達式的運用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM