2009-03-23 28 views

答えて

17

まず、DataTableが列ではなく、データ・セットを持ってい

は、このように私のためにこれを行うだろうが方法です。その後、

あなたがそれらを取り除くしたい場合は、:

table.Columns.Clear(); 

そうでない場合、あなたはインデックスを持っている場合:あなたは列のインデックスを持っている場合

table.Columns.RemoveAt(0); 

が仕事をする必要があります。カラム0を削除すると、数字がシャッフルされるので、逆の順序で行う必要があることに注意してください。

代わりに、名前で削除することもできます。

table.Columns.Remove("Foo"); 
2

そのような方法はありません。しかし、あなた自身のヘルパーメソッドを書くことができます。

public static void RemoveColumns(DataTable dt, params DataColumn[] dc) 
{ 
    foreach (DataColumn c in dc) 
    { 
     dt.Columns.Remove(c); 
    } 
} 

RemoveColumns(ds.Tables[0], ds.Tables[0].Columns[1], ds.Tables[0].Columns[2]); 
2

一度に複数の列を削除する方法はありません。必要に応じて拡張メソッドを作成することができます。このような何か:

public static class DataColumnCollectionExtensions 
    { 
     public static void RemoveColumns(this DataColumnCollection column, params string[] columns) 
     { 
      foreach (string c in columns) 
      { 
       column.Remove(c); 
      } 
     } 
    } 

あなたは、このようにそれを使用することができます:

DataTable table1 = ds.Tables[0]; 
table1.Columns.RemoveColumns("Column1","Column2","Column6"); 
+0

より良い方法(o; –

3

私は両方のリサイズに前& Webアプリケーションを、これを行っています。 DataTableを逆にして、最後にAcceptChangesを実行する必要があります。この特定の例は、すべてのGUID( "id"で終わる列)を削除する点で一般的です。これまであなたは、列名の新しいセットを持っているので、列を削除したい場合は

private void RemoveUselessFields(ref DataTable dtResults) 
    { 
     for (int i = dtResults.Columns.Count - 1; i >= 0; i--) 
     { 
      DataColumn column = dtResults.Columns[i]; 
      if (column.ColumnName.Substring(column.ColumnName.Length - 2, 2).ToUpper() == "ID") 
      { 
       dtResults.Columns.Remove(column); 
      } 
     } 
     dtResults.AcceptChanges(); 

    } 
0

、あなたはこれを使用することができます。

DataSet.Reset(); 

はそれがお役に立てば幸いです。

関連する問題