如何删除数据集的列?

时间:2009-03-23 14:39:22

标签: c# .net dataset

如何删除数据集的列?

是否有一种方法可以像我这样对我这样做:

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

或者也许是这样:

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

5 个答案:

答案 0 :(得分:17)

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

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

table.Columns.Clear();

否则,如果你有索引:

table.Columns.RemoveAt(0);
如果您有列索引,

应该完成这项工作。请注意,如果删除第0列,则数字将随机播放(因此您可能需要按相反顺序执行)。

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

table.Columns.Remove("Foo");

答案 1 :(得分:4)

我之前在winforms&amp ;;网络应用。您必须反过来通过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();

    }

答案 2 :(得分:2)

没有这样的方法。但你可以简单地编写自己的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]);

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

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

DataSet.Reset();

希望它有所帮助。