如何根据c#中的列标题清除数据集行

时间:2015-05-22 08:25:53

标签: c# asp.net .net dataset

假设我有一个数据集,其中包含一个表格,其中的列标题为A,B,C  我只需要清除B列的所有内容。我怎么能这样做?

目前我所做的是,首先我删除了B栏

g.vs.find("A")

然后加回来

Dataset.Tables[0].Columns.Remove(B);

但如果采用上述方法,列索引将会改变。是否还有其他有效的方法可以做同样的事情......?

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用循环:

foreach(DataRow row in Dataset.Tables[0].Rows)
{
    row.SetField("B", ""); // or whatever you want to assign
}

您也可以删除该列,再次添加并使用SetOrdinal获取相同的位置:

int ordinal = Dataset.Tables[0].Columns["B"].Ordinal;
Dataset.Tables[0].Columns.Remove("B");
DataColumn bCol = Dataset.Tables[0].Columns.Add("B");
bCol.SetOrdinal(ordinal);

后者并不比普通循环更有效,因为also uses a loop behind the scenes

如果您需要通用方法来指定“空”值,这意味着给定列类型的默认值,您可以使用此方法:

Type colType = Dataset.Tables[0].Columns["B"].DataType;
object defaultValue = colType.IsValueType ?  Activator.CreateInstance(bType) : null;
foreach (DataRow row in Dataset.Tables[0].Rows)
{
    row.SetField("B", defaultValue); 
}

答案 1 :(得分:2)

  dt.Columns.Remove("B");
    dt.Columns.Add("B").SetOrdinal(1);