score:10

Accepted answer

These two expressions are exactly the same in C#

new Foo
{
    Property1 = row1.Field<string>("Hey")
    Property2 = row2.Field<string>("Ho")
};

and

new Foo()
{
    Property1 = row1.Field<string>("Hey")
    Property2 = row2.Field<string>("Ho")
};

because Jon said so, and Mr. Lippert tells us why the C# gods chose to make it so in C# 3.0

In your larger example, the select takes an expression of this form, and since the object initializer expression is the same then the larger expression also yields the same result :)

score:6

If you use an object initializer and don't pass any parameters to the constructor, the parenthesis can be omitted. Both statements are equivalent.

From C# language specification:

An object creation expression can omit the constructor argument list and enclosing parentheses provided it includes an object initializer or collection initializer. Omitting the constructor argument list and enclosing parentheses is equivalent to specifying an empty argument list.


Related Articles