假设我有一个数据集,其中包含一个表格,其中的列标题为A,B,C 我只需要清除B列的所有内容。我怎么能这样做?
目前我所做的是,首先我删除了B栏
g.vs.find("A")
然后加回来
Dataset.Tables[0].Columns.Remove(B);
但如果采用上述方法,列索引将会改变。是否还有其他有效的方法可以做同样的事情......?
答案 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);