今天我在尝试使用LINQ和DataTable进行实验。
var query = from row1 in table1.AsEnumerable()
from row2 in table2.AsEnumerable()
where
(row1.Field<string>("a") == row2.Field<string>("b"))
select new Foo
{
Property1 = row1.Field<string>("Hey")
Property2 = row2.Field<string>("Ho")
};
我发现无论我使用
select new Foo
还是 select new Foo()
,查询的结果都完全相同,这让我感到很奇怪。我想深入了解 Linq 的机制,包括委托等内容,以便更清楚地理解这一点 - 但是对于一个简单的人来说,有什么区别,如果有的话,会是什么呢?
编辑
这个问题在 SOF 上已经有了一些类似的答案,但“对象初始化程序”并没有成为头脑中的首选项。它也非常具体地提到了 LINQ,其中 90% 的网络提示操作都是针对匿名类型(不确定为什么,我发现使用具体类型有很好的效果,尤其是智能感知)。如果有任何材料专门指定在 LINQ 中使用具体类型实现的示例,我只能找到没有括号的 new Foo
。在 LINQ 构造方面,特别是对于初学者来说,可能很难找出那里初始化了什么(对象、委托、谓词等等-至少对我来说是这样),所以希望至少有些人会发现这个问题和回答有用。