【问题标题】:Remove DataColumn from DataTable with Data使用数据从 DataTable 中删除 DataColumn
【发布时间】:2015-05-22 17:57:59
【问题描述】:

我有带数据的数据表。我调用了我的 postgres 数据库并获取了 DataTable。

// get the new data from postgres
   var dataTable = pg.GetDataTable("SELECT * FROM " + '"'+table+'"');

现在我需要删除特定的列。假设有 5 列数据。

ID     |   Name   | Address | Mobile | Home
_______________________________________________
    1  |  A       |AAA      | 123    | 345
    2  |  B       |BBB      | 234    | 456
    3  |  C       |CCC      | 345    | 567

所以我需要删除“Home” DataColumn 并重新创建这个 DataTable 如下

  ID   |   Name   | Address | Mobile 
____________________________________
    1  |  A       |AAA      | 123    
    2  |  B       |BBB      | 234    
    3  |  C       |CCC      | 345    

我该怎么做?

感谢您的 cmets。

谢谢

【问题讨论】:

  • 您是否真的需要 Home 列在查询之间以及何时删除该列?如果没有,为什么不只选择 SELECT 语句中的列而不是全部用星号
  • 感谢您的评论。这只是我的代码的一小部分。所以我需要删除特定的列。这不仅适用于一张桌子。 :)
  • 你不能跳过选择它吗?似乎您的表已经需要特殊处理,因此可能不适合使用通用 sql select。
  • 好的,那么如果您创建一个新数据表并将数据复制到新数据表中呢?或者也许正如蒂姆施梅尔特所建议的那样。 :)
  • 我会按照Taosique的回答,但是无论如何删除该列的原因是什么?

标签: c# .net datatable datacolumn


【解决方案1】:

考虑使用 dataTable.Columns.Remove("ColumnName") 要么 dataTable.Columns.RemoveAt(ColumnNumber)

【讨论】:

  • 这与其他答案没有本质区别,其他答案对代码的解释有额外的积极意义。
【解决方案2】:

只需明确指定您需要的列,而不是选择不需要的列并在之后删除它们:

SELECT "Id", "Name", "Address", "Mobile"

使用SELECT * 是不礼貌的,因为它会使您与数据库的合同不稳定 - 如果列配置发生更改,您将获得不可预知的结果。

【讨论】:

    【解决方案3】:

    你只需要使用DataTable.Columns.Remove(string name)的方法:

    dataTable.Columns.Remove("Home");
    

    然后表格不再包含该列,并且该列中所有行的数据都被丢弃。但是,首先忽略此列并列出所需的列:

    var dataTable = pg.GetDataTable("SELECT ID, Name, Address, Mobile FROM " + '"'+ table +'"');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 2019-01-11
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多