【轉】編寫高品質代碼改善C#程式的157個建議——建議27:在查詢中使用Lambda運算式

來源:互聯網
上載者:User

標籤:write   nbsp   運算式   高品質   order   sys   strong   簡潔   改善   

 

建議27:在查詢中使用Lambda運算式

LINQ實際上是基於擴充方法和Lambda運算式的。任何LINQ查詢都能通過擴充方法的方式來代替。

var personWithCompanyList = from person in personList                            select new { PersonName = person.Name, CompanyName = person.CompanyID==0?"Micro":"Sun" };foreach (var item in personWithCompanyList){    Console.WriteLine(item.ToString());}

等價於:

foreach (var item in personList.Select(person=>new {PersonName=person.Name,CompanyName=person.CompanyID==0?"Micro":"Sun"})){    Console.WriteLine(item.ToString());}

針對LINQ設計的擴充方法大多應用了泛型委派。System命名空間定義了泛型委派Action、Func和Predicate。Action用於執行一個操作,所以它沒有傳回值;Func用於執行一個操作並返回一個值;Predicate用於定義一組條件並判讀參數是否符合條件。Select擴充方法接受的就是一個Func委託,而Lambda運算式就是一個簡潔的委託,運算子“=>”左邊代表的是方法的參數,右邊的是方法體。

我們通過直接調用擴充方法來使用Lambda運算式,這樣即完成了功能,也減少了一行代碼。在實際工作中,應該靈活運用這種方式。

foreach (var item in personWithCompanyList.Where(p=>p.CompanyName=="Sun")){    Console.WriteLine(item.PersonName);}

輸出:

Mike

Steve

 

調用OrderByDescending擴充方法,針對PersonName排序:

foreach (var item in personList.OrderByDescending(person=>person.Name)){    Console.WriteLine(item.Name);}

輸出:

Steve
Rose
Mike

 

轉自:《編寫高品質代碼改善C#程式的157個建議》陸敏技

【轉】編寫高品質代碼改善C#程式的157個建議——建議27:在查詢中使用Lambda運算式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.