繁体   English   中英

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

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

假设我有一个数据集,其中包含一个表,该表的列标题为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);

后者并不比普通循环更有效,因为它还在幕后使用了一个循环

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM