如何删除数据集的列?
是否有一种方法可以像我这样对我这样做:
rh.dsDetail = ds.Tables[0].Columns.Remove(
或者也许是这样:
rh.dsDetail = ds.Tables[0].Columns.Remove( ds.Tables[0].Columns[1],ds.Tables[0].Columns[2])
答案 0 :(得分:17)
首先,DataTable
包含列,而不是数据集。
如果你想摆脱它们,那么:
table.Columns.Clear();
否则,如果你有索引:
table.Columns.RemoveAt(0);
如果您有列索引,应该完成这项工作。请注意,如果删除第0列,则数字将随机播放(因此您可能需要按相反顺序执行)。
或者,您可能希望按名称删除:
table.Columns.Remove("Foo");
答案 1 :(得分:4)
我之前在winforms&amp ;;网络应用。您必须反过来通过DataTable,然后在最后执行AcceptChanges。这个特殊的例子是典型的,因为它删除了所有的GUID(以“id”结尾的列)。
private void RemoveUselessFields(ref DataTable dtResults)
{
for (int i = dtResults.Columns.Count - 1; i >= 0; i--)
{
DataColumn column = dtResults.Columns[i];
if (column.ColumnName.Substring(column.ColumnName.Length - 2, 2).ToUpper() == "ID")
{
dtResults.Columns.Remove(column);
}
}
dtResults.AcceptChanges();
}
答案 2 :(得分:2)
没有这样的方法。但你可以简单地编写自己的Helpermethod
public static void RemoveColumns(DataTable dt, params DataColumn[] dc)
{
foreach (DataColumn c in dc)
{
dt.Columns.Remove(c);
}
}
RemoveColumns(ds.Tables[0], ds.Tables[0].Columns[1], ds.Tables[0].Columns[2]);
答案 3 :(得分:2)
没有内置方法一次删除多个列。如果您愿意,可以创建扩展方法。像这样:
public static class DataColumnCollectionExtensions
{
public static void RemoveColumns(this DataColumnCollection column, params string[] columns)
{
foreach (string c in columns)
{
column.Remove(c);
}
}
}
然后您可以像这样使用它:
DataTable table1 = ds.Tables[0];
table1.Columns.RemoveColumns("Column1","Column2","Column6");
答案 4 :(得分:0)
如果您想删除列,因为您有新的列名称集,可以使用:
DataSet.Reset();
希望它有所帮助。