私はこれが非常に古い質問であることを知っています、そして私は数日前に同様の状況にあります。
問題は、私のテーブルでは約です。10000行なので、トラフDataTable
行のループは非常に遅くなりました。
最後に、私ははるかに高速な解決策を見つけました。そこではDataTable
、希望する結果でソースのコピーを作成し、ソースDataTable
とmerge
結果を一時的なものからDataTable
ソース1にクリアします。
注意:代わりにJoe
、DataRow
呼び出さname
れた場所で検索します。名前のないすべてのレコードを検索する必要がありますJoe
(検索の少し反対の方法)
例があります(vb.net
):
'Copy all rows into tmpTable whose not contain Joe in name DataRow
Dim tmpTable As DataTable = drPerson.Select("name<>'Joe'").CopyToTable
'Clear source DataTable, in Your case dtPerson
dtPerson.Clear()
'merge tmpTable into dtPerson (rows whose name not contain Joe)
dtPerson.Merge(tmpTable)
tmpTable = Nothing
この短い解決策が誰かを助けることを願っています。
有る c#
コードます(オンラインコンバーターを使用したため、正しいかどうかはわかりません:():
DataTable tmpTable = drPerson.Select("name<>'Joe'").CopyToTable;
dtPerson.Clear();
dtPerson.Merge(tmpTable);
tmpTable = null;
もちろん、Try/Catch
結果がない場合(たとえば、結果dtPerson
が含まれname
Joe
ていない場合は例外がスローされる場合)に使用したので、テーブルに対して何も行わず、変更されません。
[ii]
をに変更しました[i]
:-)