2011-07-21 18 views
1

我有一個DataTable可能有更多的列。但是「NetAmount」,「TotalAmount」,「Destination」是始終存在於DataTable中的DataTable列。如何使用C#.Net刪除更多的DataTable列?

這裏我想從DataTable中刪除三個列,比如「NetAmount」,「TotalAmount」和「Destination」,並取DataTable中的其他列值。

我試着像下面那樣得到Desired Output。

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。如果這是API提供的唯一方法,調用Remove 3次也不是漫長/幼稚的。 –

+0

@ Heinzi&Vijay:嗨,對不起。我只是輸入,而沒有真正gothrough我的代碼。現在我編輯了我的問題。請看看它。 – 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

我從後端獲取DataTable。而且我還需要這些專欄來達到另一個目的。 – thevan

+0

爲什麼花時間去除它們......你可以忽略它們。 –

+0

我有一個DataSet,我如何將它的前半部分添加到DataTable中。 – SearchForKnowledge