2011-04-02 64 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 
};