2008-09-16 66 views
82

我有一个DataSet,我得到一个DataTable从我从一个函数调用传回。它有15-20列,但我只需要10列的数据。从C#中的DataTable移除列#

有没有办法删除我不想要的那些列,将DataTable复制到另一个只包含我想要的列的定义,或者只是更好地迭代集合并使用我需要的列。

我需要将值写入固定长度的数据文件。

+0

我对我收到的数据集没有任何控制权。我唯一知道的是它包含了一切。 – 2008-09-16 18:10:09

回答

217

除了限制选择,以减少带宽和内存中的列:

 DataTable t; 
     t.Columns.Remove("columnName"); 
     t.Columns.RemoveAt(columnIndex); 
+1

只是为了澄清:当DataTable已经存在行时,这也适用,不仅在一个空的`DataTable`上。 – 2015-05-18 09:26:03

21

要删除一个你想要的毕竟列,这个小功能应该工作。它将在索引10处移除(记住列基于0),直到列数为10或更少。

 DataTable dt; 
     int desiredSize = 10; 

     while (dt.Columns.Count > desiredSize) 
     { 
      dt.Columns.RemoveAt(desiredSize); 
     } 
+0

只是我的2c,我不喜欢这个解决方案,使用列索引导致恶梦维护.. – batman 2018-01-02 23:48:00