LINQ學前準備之物件集合初始化器

2022-03-19 05:45:27 字數 804 閱讀 1142

物件初始化器為我們提供了更加簡潔和方便的物件初始化方法。

假設我們有乙個物件address需要初始化,我們的**可能是這樣的:

#region address class

public class address

public string state

public string zipcode

}#endregion

#region initial address

address address = new address();

address.city = "new york";

address.staty = "ny";

address.zipcode = "10016";

#endregion

顯然,如果將這種初始化方法應用於linq中是極為不方便且不優雅的。

因此微軟提供了物件初始化器:

#region

address address = new address;

#endregion

同樣的,對於集合初始化器也採用了類似的方法:
listcitys = new list;
其實,如果我們反編譯**,就會發現,當我們用物件初始化器來初始化物件的時候,c#編譯器依舊會生成乙個address型別的區域性變數,並呼叫address的無參建構函式來初始化他,然後再對其屬性進行賦值操作,最後返回這個變數。因此,我們提供的address必須有乙個無參建構函式。

LINQ之物件標識

實際上,通常我們是將資料從資料庫中提取出來放入另一層中,應用程式在該層對資料進行處理。這就是 linq to sql 支援的模型。將資料作為行從資料庫中提取出來時,你不期望表示相同資料的兩行實際上對應於相同的行例項。如果您查詢特定客戶兩次,您將獲得兩行資料。每一行包含相同的資訊。對於物件。你期望在你...

LINQ之物件載入

在查詢某物件時,實際上你只查詢該物件。不會同時自動獲取這個物件。這就是延遲載入。例如,您可能需要檢視客戶資料和訂單資料。你最初不一定需要檢索與每個客戶有關的所有訂單資料。其優點是你可以使用延遲載入將額外資訊的檢索操作延遲到你確實需要檢索它們時再進行。請看下面的示例 檢索出來customerid,就根...

LINQ之物件標識

實際上,通常我們是將資料從資料庫中提取出來放入另一層中,應用程式在該層對資料進行處理。這就是 linq to sql 支援的模型。將資料作為行從資料庫中提取出來時,你不期望表示相同資料的兩行實際上對應於相同的行例項。如果您查詢特定客戶兩次,您將獲得兩行資料。每一行包含相同的資訊。對於物件。你期望在你...