所以我刚从亚马逊得到了LINQ to Objects Using C# 4.0: Using and Extending LINQ to Objects and Parallel LINQ (PLINQ)的推荐。
它说这本书介绍了在Linq中使用dynamic
关键字,这让我思考:
用dynamic
关键字能做什么,而用Linq却做不到呢?
所以我刚从亚马逊得到了LINQ to Objects Using C# 4.0: Using and Extending LINQ to Objects and Parallel LINQ (PLINQ)的推荐。
它说这本书介绍了在Linq中使用dynamic
关键字,这让我思考:
用dynamic
关键字能做什么,而用Linq却做不到呢?
3条答案
按热度按时间k0pti3hp1#
我有个想法通过将LINQ与dynamic相结合,可以像查询类型化数据集一样查询非类型化数据集。
例如,假设myDataSet是一个非类型化的DataSet。使用动态类型和一个名为AsDynamic()的扩展方法,可以实现以下功能:
下面介绍如何定义AsDynamic扩展方法。请注意它如何返回动态的IE,这使得它适合LINQ查询:
通过子类化DynamicObject,这利用了自定义绑定的优势--您可以自己接管解析成员名称的过程。在本例中,我们将get和set成员访问绑定到检索或存储底层DataRow中的对象。
ymzxtsji2#
乔的回答很酷。我有一个简化用法的主意。如果你把它添加到扩展类中:
它允许在LINQPad中使用这样的查询:
**注意:**需要添加以下引用:
System.Data.OleDb
从System.Data
程序集添加到查询属性中System.Dynamic
添加到查询属性uq.Connection
仅在通过Connection下拉列表关联了数据库时可用。如果选择了"<none>"
,则会发生编译错误。**更新:**我注意到Joe在latest Beta v4.53.03 of LinqPad中增加了一个函数
ExecuteQueryDynamic
,可以用来实现这一点,例如:这将使用Linq2Sql连接从Northwind数据库返回
Customers
表,作为IEnumerable<dynamic>
。bprjcwpo3#
我所做的是让我得到这个结果,但我认为有一个更好的方法。