DataRowCollectionインスタンスをDataRow[]に変換するための最もパフォーマンスの高い方法は何ですか?
47632 次
4 に答える
103
DataRow[] rows = dt.Select();
まだデータテーブルにアクセスできると仮定します。
于 2008-10-22T19:47:36.427 に答える
17
完全を期すために、これは別の方法 (Linq を使用) であり、行の順序を保持します。
DataRow[] rows = dt.Rows.Cast<DataRow>().ToArray()
于 2012-04-23T14:25:22.490 に答える
5
含まれているテーブルにアクセスできない場合は、拡張メソッドを使用できます。
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();
どちらの方法でも、複数のオーバーロード ( Description、Source )でDataTable
のメソッドを使用できます。Select
DataRow[] dataRows = dataTable.Select();
于 2014-08-27T15:47:48.773 に答える
5
これは明らかですが、次のようになります。
DataRowCollection.CopyTo(DataRow[] array, Int32 offset)
?
何があっても、コレクションを反復する必要があるようです (CopyTo は内部の DataRowTree 要素を反復します)。
リフレクションを使用して非公開ツリーにアクセスできると思いますが、かなりのコストがかかります。
于 2008-10-22T19:46:18.177 に答える