将DataRowCollection转换为DataRow
将DataRowCollection实例转换为DataRow []的最佳方式是什么?
DataRow[] rows = dt.Select();
假设你仍然可以访问数据表。
为了完整起见,这是另一种方式(与Linq),它保留行sorting :
DataRow[] rows = dt.Rows.Cast<DataRow>().ToArray()
这是显而易见的,但是:
DataRowCollection.CopyTo(DataRow[] array, Int32 offset)
?
看来不pipe怎样,你将不得不迭代集合(CopyTo迭代内部DataRowTree元素)。
我想你可以使用reflection来访问非公有树,但花费很大。
如果您不能访问包含表格,则可以使用扩展方法:
public static class DataRowCollectionExtensions { public static IEnumerable<DataRow> AsEnumerable(this DataRowCollection source) { return source.Cast<DataRow>(); } }
之后:
DataRow[] dataRows = dataRowCollection.AsEnumerable().ToArray();
但是,如果您有权访问包含表,最好使用DataTable
的AsEnumerable
扩展方法( Description , Source )访问行:
DataRow[] dataRows = dataTable.AsEnumerable().ToArray();
无论哪种方式,你可以使用DataTable
的Select
方法与几个重载( 描述 , 来源 ):
DataRow[] dataRows = dataTable.Select();