zoukankan      html  css  js  c++  java
  • 逆向删除属性表中的字段

    删除属性表中的字段一定要注意循环的方式。如果是for循环,i< FeatureClass.Fields.FieldCount话,每删除一个字段FieldCount属性返回的字段数量将减少一个,也就是你根本不能完全删除想要删除的字段;如果你先把FeatureClass.Fields.FieldCount赋给一个变量count,for循环中使用i<count,最后导致索引越界;所以,建议使用逆向的方法删除字段。

    1. IFeatureClass pointFS = GPClass.gpUtilities.OpenFeatureClassFromString(tmpPath + @"Point.shp");
    2. int fieldCount = pointFS.Fields.FieldCount;
    3. IField delField = null;
    4. //逆向删除,以免出错
    5. for (int i = fieldCount - 1; i >= 0; i--)
    6. {
    7.     delField = pointFS.Fields.get_Field(i);
    8.     if (delField.Name != "FID" &&
    9.         delField.Name != "Shape" &&
    10.         delField.Name != "Layer" &&
    11.         delField.Name != "Text"
    12.         )
    13.     {
    14.         pointFS.DeleteField(delField);
    15.         Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss ") + "删除字段" + delField.Name);
    16.     }
    17. }

    需要注意的是,逆向删除时,起始值是Count – 1,因为字段索引是从0开始的,自然,限制条件i>=0.

  • 相关阅读:
    标准输入/输出通道
    不要在纠结负数的表示了
    Coursera公开课-Machine_learing:编程作业7
    Heap堆
    广义表的实现
    二叉树的实现
    模拟实现strstr和strrstr
    栈和队列常考面试题(二)
    栈和队列常考面试题(一)
    vector迭代器失效的几种情况
  • 原文地址:https://www.cnblogs.com/liweis/p/4160388.html
Copyright © 2011-2022 走看看