雖然物件初始設定式可以用於任何內容,但是在 LINQ 查詢運算式中特別有用。查詢運算式會頻繁使用匿名型別,該型別只能用物件初始設定式初始化。在 select 子句中,查詢運算式可以將原始序列的物件轉換為具有不同值和形狀的物件。這在您只要儲存序列中每個物件的部分資訊時相當有用。在下列範例中,假設產品物件 (p) 包含許多欄位和方法,而您只對建立包含產品名稱和單價之物件的序列有興趣。
var productInfos =
from p in products
select new { p.ProductName, p.UnitPrice };
執行此查詢時,productInfos 變數會包含物件序列,可以在 foreach 陳述式中存取,如下列範例所示:
foreach(var p in productInfos){...}
新匿名型別中的每個物件都有兩個公用屬性,會接收與原始物件中屬性或欄位相同的名稱。您也可以在建立匿名型別時重新命名欄位,下列範例將 UnitPrice 欄位重新命名為 Price。
select new {p.ProductName, Price = p.UnitPrice};