将 DataRowCollection 转换为 DataRow[]
将 DataRowCollection 实例转换为 DataRow[] 的最佳执行方法是什么?
What's the best performing way to convert a DataRowCollection instance to a DataRow[]?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
假设您仍然可以访问数据表。
Assuming you still have access to the datatable.
为了完整起见,这是另一种方式(使用 Linq),它保留行排序:
For the sake of completeness, this is another way (with Linq), and it preserve the row ordering:
这有点明显,但是:
DataRowCollection.CopyTo(DataRow[] array, Int32 offset)
?似乎无论如何,您都必须迭代该集合(CopyTo 迭代内部 DataRowTree 元素)。
我想您可以使用反射来访问非公共树,但成本很高。
This is kind of obvious, but:
DataRowCollection.CopyTo(DataRow[] array, Int32 offset)
?It seems like no matter what, you're going to have to iterate the collection (CopyTo iterates the internal DataRowTree elements).
I suppose you could use reflection to access the non-public tree, but at a significant cost.
如果您无权访问包含表,则可以使用扩展方法:
其后:
但如果您有权访问包含表,则最好使用
DataTable
的AsEnumerable 访问行
扩展方法 (说明,来源):无论哪种方式,您可以使用
DataTable
的Select
方法以及多个重载 (说明,来源):If you have not access to the containing table, you may use the extension method:
And thereafter:
But if you have access to the containing table, it's better to access rows using
DataTable
'sAsEnumerable
extension method (Description, Source):Either way you may use
DataTable
'sSelect
method with several overloads (Description, Source):