2011-07-21 16 views
1

1つのDataTableに複数の列がある可能性があります。しかし、 "NetAmount"、 "TotalAmount"、 "Destination"は常にDataTableに存在するDataTable列です。C#.Netを使用してDataTable列を削除する方法?

ここでは、DataTableから「NetAmount」、「TotalAmount」、「Destination」などの3つの列を削除し、DataTableの他の列の値を取得します。

私は以下のようにして、希望の出力を得ました。

dtAttribute.Columns.Remove("NetAmount"); //dtAttribute is the Main DataTable 
    dtAttribute.Columns.Remove("TotalAmount"); 
    dtAttribute.Columns.Remove("Destination"); 
    DataTable dtItem = dtAttribute.Copy();  

しかし、それは非常に幼稚で、長いです。他の方法がありますか?ご提案ください。

+0

これは本当ですか? [ドキュメント](http://msdn.microsoft.com/en-us/library/tcdez2aw.aspx)によると、DataColumnCollection.Removeは 'void'メソッドです。つまり、値を返すべきではありません。あなたの*コードのようなものではなく、実際のコード*を表示してください。 – Heinzi

+0

コンパイルしたコードからサンプルを取り出してもよろしいですか?私が間違っていない場合、Removeメソッドはvoid型です。また、3回削除を呼び出すことは、APIによって提供される唯一の方法であれば、長くても幼稚でもありません。 –

+0

@Heinzi&Vijay:こんにちは。私はちょうど実際には私のコードを踏まずにタイプしました。今私は自分の質問を編集しました。それを見てください。 – thevan

答えて

7

あなたのコードに何も問題はありません(の後にテーブルをコピーしていることを除いて - これはあなたが望むものですか?)。あなたはもっと抽象的な(の代わりに、何度も何度も同じ行を繰り返して)何かをしたい場合は、ループ内の列を削除することを検討可能性がある

var dtItem = dtAttribute.Copy(); // if you want to keep a copy of the original table 

var toRemove = new string[] {"NetAmount", "TotalAmount", "Destination"}; 
foreach (col in toRemove) 
    dtItem.Columns.Remove(col); 
+0

ありがとうHeinzi。 – thevan

+0

列0〜9を削除する場合はどうすればよいですか? – SearchForKnowledge

+0

@SearchForKnowledge:[DataTable.Columns](https://msdn.microsoft.com/en-us/library/system.data.datatable.columns(v = vs.110).aspx)は、型の値を返します[DataColumnCollection](https://msdn.microsoft.com/en-us/library/system.data.datacolumncollection(v = vs.110).aspx)、DataColumnCollectionには[RemoveAt](https:// msdn.microsoft.com/en-us/library/system.data.datacolumncollection.removeat(v=vs.110).aspx)。それはあなた自身の質問に答えるのに役立ちますか? – Heinzi

0

代わりに列を除去する、についてのそれらを入れない方法最初のDataTableで?

+0

私は、BackEndからDataTableを取得しています。そして私はまた、互いに目的のためにそれらの列が必要です。 – thevan

+0

なぜそれらを削除する時間を費やす...あなたはそれらを無視することができます。 –

+0

私はDataSetを持っていますが、その前半をDataTableにどのように追加できますか? – SearchForKnowledge

関連する問題