gpt4 book ai didi

c# - 如何以编程方式从 DataTable 中删除 DataColumn

转载 作者:太空宇宙 更新时间:2023-11-03 23:44:27 24 4
gpt4 key购买 nike

我有密码

foreach (DataColumn dataTableCol in this.dataTable.Columns)
{
bool columnFound = false;
foreach (GRTColumnView uiColumn in descriptor.UIColumns)
{
if (dataTableCol.ColumnName.Equals(uiColumn.Name))
{
columnFound = true;
break;
}
}

if (!columnFound)
{
if (this.dataTable.Columns.Contains(dataTableCol.ColumnName))
this.dataTable.Columns.Remove(dataTableCol.ColumnName);
}

}

如果在另一个集合中找不到某些“东西”,我想从集合中删除它们。

当我运行上面的程序时,我得到

Iteration may not execute as collection was modified

“集合已修改”- 因为删除一定已被命中

那么实现这样的事情的方法是什么?

我能想到的是记下所有要删除的“东西”,然后

foreach( aThing in all_things_to_remove)
remove_from_collection(aThing)

但上面对我来说似乎不是一个好方法,因为我必须进行另一个循环并且正在使用额外的内存

最佳答案

在这种特定情况下,您要遍历一个包含几列的小集合,您可以只创建一个新集合(通过 ToList()),这样您就不会迭代在您正在修改的同一集合上:

foreach (var dataTableCol in dataTable.Columns.Cast<DataColumn>().ToList())
{
...

dataTable.Columns.Remove(dataTableCol.ColumnName);
}

推荐的方法是向后枚举:

for (var i = dataTable.Columns.Count - 1; i >= 0; i--)
{
...

dataTable.Columns.Remove(dataTable.Columns[i].ColumnName);
}

关于c# - 如何以编程方式从 DataTable 中删除 DataColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com