首页 新闻 会员 周边 捐助

for循环中datatable.column.remove()方法

0
悬赏园豆:20 [已解决问题] 解决于 2014-10-22 12:55
for (int j = 2; j < dt.Columns.Count; j++)
{
if (dt.Columns[j].ColumnName.Contains(keyWord))
{
dt.Columns.Remove(dt.Columns[j]);
}
}

return dt;

用以上代码进行列的remove操作,可是执行过后还是好多列还是存在,貌似只删除了第一次循环的列,应该怎么把符合条件的全remove呢

blacklight的主页 blacklight | 初学一级 | 园豆:147
提问于:2014-10-22 10:09
< >
分享
最佳答案
0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("Name1", typeof(string)));
            dt.Columns.Add(new DataColumn("Name2", typeof(string)));
            dt.Columns.Add(new DataColumn("Name3", typeof(string)));
            dt.Columns.Add(new DataColumn("Name4", typeof(string)));
            dt.Columns.Add(new DataColumn("Name5", typeof(string)));

            dt.Columns.Add(new DataColumn("Age", typeof(string)));

            dt.Columns.Add(new DataColumn("Address", typeof(string)));

            List<DataColumn> list = new List<DataColumn>();

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                if (dt.Columns[i].ColumnName.Contains("Name"))
                {
                    list.Add(dt.Columns[i]);
                }
            }

            for (int i = 0; i < list.Count; i++)
            {
                dt.Columns.Remove(list[i]);
            }



        }
    }
}

收获园豆:10
需要格局 | 老鸟四级 |园豆:2145 | 2014-10-22 10:35

已经解决了,谢谢你给出一个这么完整的例子

blacklight | 园豆:147 (初学一级) | 2014-10-22 12:54
其他回答(3)
0

你要Remove的话,得从高往低走。

for (int j = dt.Columns.Count-1; j=2; j--)

收获园豆:5
爱编程的大叔 | 园豆:30844 (高人七级) | 2014-10-22 10:15
0

再删除过程中:dt.Columns.Count是不断变化的,数据的索引[j]也是不断变化的,可以从后往前删。

for(int j=dt.Columns.Count; j >= 2; j --)

{

  //do Something.

}

收获园豆:5
大志若愚 | 园豆:2138 (老鸟四级) | 2014-10-22 10:17
0

造化,造化,楼上两位说的对,dt.Columns.Count在remove后就变了,不能当准了。

会长 | 园豆:12463 (专家六级) | 2014-10-22 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册