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

How to clear the dataset rows based on the column headings in c#

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

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

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

然后加回去

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

但如果执行上述操作,列索引将更改 method.Is 还有其他有效的方法可以执行相同的操作吗...?

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

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

如果您需要一种通用方法来分配一个 "empty" 值,这意味着给定列类型的默认值,您可以使用这种方法:

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); 
}
  dt.Columns.Remove("B");
    dt.Columns.Add("B").SetOrdinal(1);