C#中的let字句應(yīng)用示例
一、應(yīng)用場(chǎng)景
在查詢(xún)表達(dá)式中,存儲(chǔ)子表達(dá)式的結(jié)果有時(shí)很有用,這樣可以在隨后的子句中使用。 可以使用 let 關(guān)鍵字完成這一工作,該關(guān)鍵字可以創(chuàng)建一個(gè)新的范圍變量,并且用您提供的表達(dá)式的結(jié)果初始化該變量。 一旦用值初始化了該范圍變量,它就不能用于存儲(chǔ)其他值。 但如果該范圍變量存儲(chǔ)的是可查詢(xún)的類(lèi)型,則可以對(duì)其進(jìn)行查詢(xún)。
二、示例代碼
using System; using System.Linq; namespace UseLet { class Program { static void Main() { string[] strings = { "A penny saved is a penny earned.", "The early bird catches the worm.", "The pen is mightier than the sword." }; var earlyBirdQuery = from sentence in strings let words = sentence.Split(' ') from word in words let w = word.ToLower() where w[0] == 'a' || w[0] == 'e' || w[0] == 'i' || w[0] == 'o' || w[0] == 'u' select word; foreach (var v in earlyBirdQuery) { Console.WriteLine("\"{0}\" starts with a vowel", v); } Console.WriteLine("Press any key to exit"); Console.ReadLine(); } } }
從上面效果可以看出子句let的作用。如果不使用 let,則必須在 where 子句的每個(gè)謂詞中調(diào)用 ToLower,并且let可以保存from字句中的變量來(lái)使用。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
WPF+DiffPlex實(shí)現(xiàn)文本比對(duì)工具
現(xiàn)行的文本編輯器大多都具備文本查詢(xún)的能力,但是并不能直觀的告訴用戶(hù)兩段文字的細(xì)微差異,所以對(duì)比工具在某種情況下,就起到了很便捷的效率。本文將利用DiffPlex實(shí)現(xiàn)簡(jiǎn)易的文本比對(duì)工具,需要的可以參考一下2022-11-11C#中Array的存儲(chǔ)結(jié)構(gòu)簡(jiǎn)單介紹
本文將從一個(gè)數(shù)組的基礎(chǔ)操作開(kāi)始,逐步來(lái)推導(dǎo)數(shù)組的在C#基礎(chǔ)操作、數(shù)組在CoreCLR的維護(hù)策略,數(shù)組在C++的內(nèi)存分配等階段具體是如何實(shí)現(xiàn)的,感興趣的朋友跟隨小編一起看看吧2023-11-11C#創(chuàng)建SQLite控制臺(tái)應(yīng)用程序詳解
這篇文章主要為大家詳細(xì)介紹了C#創(chuàng)建SQLite控制臺(tái)應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07C#傳值方式實(shí)現(xiàn)不同程序窗體間通信實(shí)例
Form2構(gòu)造函數(shù)中接收一個(gè)string類(lèi)型參數(shù),即Form1中選中行的文本,將Form2的TextBox控件的Text設(shè)置為該string,即完成了Form1向Form2的傳值2013-12-12C#環(huán)形緩沖區(qū)(隊(duì)列)完全實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了C#環(huán)形緩沖區(qū)(隊(duì)列)完全實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-07-07互斥量mutex的簡(jiǎn)單使用(實(shí)例講解)
本篇文章主要是對(duì)互斥量mutex的簡(jiǎn)單使用進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01