Linq對象初始值淺談
本文向大家介紹Linq對象初始值,可能好多人還不了解Linq對象初始值,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
Linq對象初始值
為解決這一問題,即將發(fā)布的“Orcas”版本提供了一種被稱為Linq對象初始值的 C# 語言功能。Linq對象初始值主要允許在單一表達(dá)式中為多個屬性或字段賦值。例如,創(chuàng)建對象的常見模式是:
- Customer customer = new Customer();
- customer.Name = “Roger”;
- customer.Address = “1 Wilco Way”;
此時(shí),Customer 沒有可以接受名稱和地址的構(gòu)造函數(shù);但是存在兩個屬性,即 Name 和 Address,當(dāng)創(chuàng)建實(shí)例后即可設(shè)置它們。Linq對象初始值允許使用以下語法創(chuàng)建相同的結(jié)果:
- Customer customer = new Customer()
{ Name = “Roger”, Address = “1 Wilco Way” };
在我們前面的 CustomerTuple 示例中,我們通過調(diào)用其構(gòu)造函數(shù)創(chuàng)建了 CustomerTuple 類。我們也可以通過Linq對象初始值獲得同樣的結(jié)果:
- var locals = customers.Where(c => c.ZipCode == 91822).Select(c =>
new CustomerTuple { Name = c.Name, Address = c.Address });
請注意,Linq對象初始值允許省略構(gòu)造函數(shù)的括號。此外,字段和可設(shè)置的屬性均可在Linq對象初始值的主體內(nèi)部進(jìn)行賦值。
我們現(xiàn)在已經(jīng)擁有在 C# 中創(chuàng)建查詢的簡潔語法。盡管如此,我們還有一種可擴(kuò)展途徑,可通過擴(kuò)展方法以及一組本身非常有用的語言功能來添加新的運(yùn)算符(Distinct、OrderBy、Sum 等)。
語言設(shè)計(jì)團(tuán)隊(duì)現(xiàn)在有了數(shù)種可賴以獲得反饋的原型。因此,我們與許多富于 C# 和 SQL 經(jīng)驗(yàn)的參與者組織了一項(xiàng)可用性研究。幾乎所有反饋都是肯定的,但明顯疏忽了某些東西。具體而言,開發(fā)人員難以應(yīng)用他們的 SQL 知識,因?yàn)槲覀冋J(rèn)為理想的語法與他們擅長領(lǐng)域的專門技術(shù)并不很符合。
【編輯推薦】