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

标签 c# asp.net .net dataset

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

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

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

然后添加回来

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

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

最佳答案

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

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

关于c# - 如何根据c#中的列标题清除数据集行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30391802/

相关文章:

c# - 数组添加奇数

c# - 为什么要挂这个?

c# - 无法加载文件或程序集 "Newtonsoft.Json.Net"(HRESULT : 0x80131040) 异常

asp.net - 访问 2007 的连接字符串

c# - MVC 中的硬编码 Controller 、 View 和操作名称是好的做法吗?

c# - 用 foreach 遍历 Dictionary,这是按什么顺序完成的?

c# - LINQ 查询不返回任何行

javascript - 在html按钮点击事件上调用jquery文件函数

asp.net - SQL Server session 状态、网络场和 IIS 配置

c# - 为什么移动矩形不一致?