ASP.NET Web サービス プロジェクトにデータ テーブルがあります。このデータ テーブルには、39 列の約 500K レコードがあり、キャッシュに存在します。1 分後、バックグラウンド スレッドがデータベースにヒットし、キャッシュされたデータ テーブルで更新したいデータベースから更新レコードを取得します。次のアプローチを使用していますが、それを行うのに十分な時間がかかります。
foreach (DataRow dRNew in dtNew.Rows)
{
DataRow row = dtOriginal.Select("ID=" + dRNew["ID"]).First();
row["Column1"] = dRNew["Column1"];
row["Column2"] = dRNew["Column2"];
row["Column3"] = dRNew["Column3"];
}
次の行を置き換えました。
DataRow row = dtOriginal.Select("ID=" + dRNew["ID"]).First();
と
DataRow row = dtOriginal.AsEnumerable().Where(r => ((Int64)r["ID"]).Equals(dRNew["ID"])).First();
しかし無駄に、私のラップトップでは約5分かかります。
誰かが私のどこで何を間違っているのか教えてもらえますか? どのアプローチで効率的に実行できるか、Dataset.Merge
または他のアプローチを使用できるかどうかはわかりません。