如何根据 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);
假设我有一个数据集,其中包含一个 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);