2011-04-02 59 views
2

我正在寫一個LINQ到SQL查詢來填充對象爲MyModel的列表。LINQ語法選項

對於爲MyModel的類定義,我有:

public class MyModel{ 
    public Var1 {get;set;} 
.... 
} 

在查詢中,我有寫作,語法的選擇:

var Query1 = from .... 
      where .... 
      select new MyModel 
      { ... } 

var Query2 = from .... 
      where .... 
      select new MyModel() 
      { ... } 

這兩個選項的工作。在select語句中添加()有什麼區別?

謝謝。

+0

沒有什麼區別的。只是中國糖 – 2011-04-02 19:07:20

回答

2

有0的區別。語法的第二個版本的存在是爲了讓對象初始化代碼運行之前創建的對象,當你調用一個非默認構造函數。例如

select new MyModel(value1, value2) 
{ ... } 

這在一個類型沒有參數的構造函數或它們的是,其僅可以通過構造函數中設置特定值的情況下是有用的。

0

沒有區別。如果這個類型有一個無參數的構造函數,你可以把大括號留出。

2

不同的是,你可以使用可選的語法來調用一個公共無參數的構造函數。嘗試運行這段代碼:

class Test 
{ 
    public int Prop { get; set; } 

    public Test(int prop) 
    { 
     Prop = prop; 
    } 

    private Test() 
    { 

    } 
} 

var t = new Test 
{ 
    Prop = 1 
};