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