2011-01-28 11 views
6

私は何千もの行を含むDataTableを利用できます。いくつかの行に「0」を含むEmpIDという列があります。私は現在のDataTableから削除したいし、新しい正しいDataTableを作成したい。膨大な量のデータが含まれているので、行ごとにチェックすることはできません。この問題を克服するための提案を私にお願いします。反復せずに巨大なデータテーブルから行を削除するには?

答えて

7

最良の方法は、(可能であれば)ソースでそれをフィルタリングすることです - あなたはデシベルからそれを作成している場合は、開始場所

を使用して、SQLクエリ自体にすべて0の値を除外します。 net 2.0、msは、データテーブルのフィルタリングロジックを大幅に強化しました。データビューの上にdataviewを使用し、そこにwhere句を追加してこのフィールドにランタイムインデックスを追加すると、すべてのレコードをループせずに目的の結果が得られます。

+0

私にデータビューのアイデアを与えていただきありがとうございます。ありがとう。私はこれを試して、あなたに戻ってきます。 – NayeemKhan

1

DataTable.Select("EmpID <> 0")を使用できます。これにより、必要に応じて新しいDataTableを作成できるDataRowの配列が返されます。

1

EmpID = 0の行を最初に選択し、これらの行のみを反復することはできませんか?

 DataTable newTable = new DataTable(); 
     foreach (DataRow dr in oldTable.Select("EmpID = '0'")) { 
      newTable.Rows.Add(dr); 
      oldTable.Rows.Remove(dr); 
     } 
+0

私は新しいテーブルに行を移動したいと思っていませんでした。答えを更新しました – Ozzy

0

DataRow [] temp = table.Select( "EmpID = '0'");

foreach(DataRow dr in temp) 
    { 
    table.Rows.Remove(dr); 
    } 

table.acceptchanges();

関連する問題