【问题标题】:How can I delete a column of a Dataset?如何删除数据集的列?
【发布时间】:2010-10-14 23:44:09
【问题描述】:

如何删除数据集的列?

有没有一种方法可以像这样为我做到这一点:

rh.dsDetail = ds.Tables[0].Columns.Remove(

或者可能是这样的:

rh.dsDetail = ds.Tables[0].Columns.Remove( ds.Tables[0].Columns[1],ds.Tables[0].Columns[2])

【问题讨论】:

    标签: c# .net dataset


    【解决方案1】:

    在python中,有一个包叫pandas。 它有一个叫做drop的函数。 pandas.dataframe.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise') 在这里,使用要在 labels="column name" 处删除的列的名称。

    请参阅 pandas 文档中的更多内容:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop.html

    【讨论】:

      【解决方案2】:

      如果您想删除列,因为您有一组新的列名,您可以使用:

      DataSet.Reset();
      

      希望对你有帮助。

      【讨论】:

        【解决方案3】:

        我以前在 winforms 和 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();
        
            }
        

        【讨论】:

          【解决方案4】:

          没有内置方法可以一次删除多个列。如果你愿意,你可以创建一个扩展方法。像这样的:

           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");
          

          【讨论】:

            【解决方案5】:

            没有这样的方法。但是你可以简单地编写自己的 Helpermethod

            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]);
            

            【讨论】:

              【解决方案6】:

              首先,DataTable 有列,而不是数据集。

              如果你想摆脱它们,那么:

              table.Columns.Clear();
              

              否则,如果你有索引:

              table.Columns.RemoveAt(0);
              

              如果您有列索引,应该可以完成这项工作。请注意,如果您删除第 0 列,则数字将随机排列(因此您可能需要按相反的顺序进行操作)。

              或者,您可能希望按名称删除:

              table.Columns.Remove("Foo");
              

              【讨论】:

                猜你喜欢
                • 2016-11-01
                • 2020-08-11
                • 2011-07-26
                • 1970-01-01
                • 2019-06-09
                • 2015-08-23
                • 2023-03-06
                • 2022-11-02
                • 2015-03-05
                相关资源
                最近更新 更多