以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  为什么这两种循环得到的结果不一样呢.都是删除临时表的列.  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=153563)

--  作者:绿火柴
--  发布时间:2020/8/14 20:48:00
--  为什么这两种循环得到的结果不一样呢.都是删除临时表的列.
为什么这两种循环得到的结果不一样呢.都是删除临时表的列.
用for each 只会删除 1,3,5,7,9列.
For Each cl As Col In tb_zh.Cols
    tb_zh.DataTable.DataCols.Delete(cl.Name)
Next

用for to 会正常删除所有列.
For zhi As Integer = tb_zh.Cols.Count - 1 To 0 Step -1
    tb_zh.DataTable.DataCols.Delete(tb_zh.Cols(zhi).Name)
Next

--  作者:有点蓝
--  发布时间:2020/8/15 8:52:00
--  
遍历删除肯定到倒序处理。

很简单的原因,假设把第一列删除了,第二列的索引就变成0了,第二次循环判断删除的是1,其实就是第3行。For Each底层一样是按索引处理的

--  作者:绿火柴
--  发布时间:2020/8/15 8:59:00
--  
明白了,是按索引值来的。索引值每循环一次,就会动态按最新的变一次。