![](/img/trans.png)
[英]Reading CSV data with oleDBConnection into a C# DataSet and adding column headings
[英]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.