linq语法选项

时间:2011-04-02 19:05:03

标签: c# linq

我正在编写一个linq-to-sql查询来填充MyModel对象列表。

对于MyModel的类定义,我有:

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

在查询中,我可以选择编写两种语法:

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

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

两种选择都有效。在select语句中添加()有什么区别?

感谢。

3 个答案:

答案 0 :(得分:2)

有0差异。存在第二个语法版本,允许您在对象初始化程序代码运行之前创建对象时调用非默认构造函数。例如

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

这在类型没有无参数构造函数或者它们是只能通过构造函数设置的特定值的情况下很有用。

答案 1 :(得分:2)

不同之处在于您可以使用可选语法来调用公共无参数构造函数。尝试运行此代码:

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

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

    private Test()
    {

    }
}

var t = new Test
{
    Prop = 1
};

答案 2 :(得分:0)

没有区别。如果类型具有无参数构造函数,则可以将大括号括起来。