- - PR -
【C#.NET】型なし→型つきデータセット変換について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-08-10 17:39
みなさま、おつかれさまです。
型なしのデータセットから型つきのデータセットへ変換するメソッドを作ってみたのですが、思った以上に処理に時間がかかります。 どのくらいかというと、こちら↓のロジックで1件処理するのに40秒もかかります;;; public DataSet ConvertDataSet( DataSet dsFrom, DataSet dsTo ) { ArrayList alTableFrom = new ArrayList(); try { int countTo = dsTo.Tables.Count; int countFrom = dsFrom.Tables.Count; bool flag = false; for( int i = 0; i < countFrom; i++ ) { if( countTo < countFrom ) { dsTo.Tables.Add(); countTo++; flag = true; } DataTable curTableTo = dsTo.Tables[i]; DataTable curTableFrom = dsFrom.Tables[i]; if( flag && bClearTablesBeforeCopyDataset ) curTableTo.Clear(); int count = dsFrom.Tables[i].Rows.Count; for( int j = 0; j < count; j++ ) curTableTo.ImportRow( curTableFrom.Rows[j] ); } dsTo.AcceptChanges(); } catch( Exception ex ) { throw new ApplicationException( "ConvertDataSet: データ変換失敗しました。", ex.InnerException ); } return dsTo; } 型なしのデータセットから型付きのデータセットへ変換するのにもっと効率のよい方法などありましたら、アドバイスいただけますでしょうか? どうぞよろしくお願いします。 |
|
投稿日時: 2004-08-11 11:37
>for( int i = 0; i < countFrom; i++ )
>for( int j = 0; j < count; j++ ) 全テーブル全ロー処理してますよね。 トータルロー数はどのくらいでしょうか? 場合によっては40秒妥当かもしれません。 >dsTo.Tables.Add(); これでは 型つきのデータセット でも型は付かないですよね。 汎用的っぽいですが実際はそうでもないようで、 dsFrom と dsTo の テーブルの配置順に制約がありますね。 _________________ えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12 えムナウのプログラミングのページ Blog1 Blog2 |
|
投稿日時: 2004-09-24 13:24
型付データセットの空のインスタンスを生成し、Mergeするとそこまで遅くないのかも。
|
1
