- PR -

【C#.NET】型なし→型つきデータセット変換について

1
投稿者投稿内容
あき
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 72
投稿日時: 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/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 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
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-09-24 13:24
型付データセットの空のインスタンスを生成し、Mergeするとそこまで遅くないのかも。
1

スキルアップ/キャリアアップ(JOB@IT)