逆向删除属性表中的字段

简介: 删除属性表中的字段一定要注意循环的方式。如果是for循环,i< FeatureClass.Fields.FieldCount话,每删除一个字段FieldCount属性返回的字段数量将减少一个,也就是你根本不能完全删除想要删除的字段;如果你先把FeatureClass.

删除属性表中的字段一定要注意循环的方式。如果是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.

目录
相关文章
|
存储 算法
【数据结构和算法】--队列的特殊结构-循环队列
【数据结构和算法】--队列的特殊结构-循环队列
229 0
|
安全 网络虚拟化 云计算
|
JavaScript 前端开发 定位技术
高德地图「海量点标记 + 海量标注」卡顿问题 解决方案
高德地图「海量点标记 + 海量标注」卡顿问题 解决方案
1685 1
|
Prometheus 运维 监控
基于Prometheus和Grafana的监控平台 - 运维告警
基于Prometheus和Grafana的监控平台 - 运维告警
395 0
|
XML JSON 前端开发
Webpack5入门手册
Webpack5入门手册
305 0
Webpack5入门手册
|
XML 前端开发 Java
《我要进大厂》- Spring框架 夺命连环22问,你能坚持到第几问?(Spring高频问题)(一)
《我要进大厂》- Spring框架 夺命连环22问,你能坚持到第几问?(Spring高频问题)
《我要进大厂》- Spring框架 夺命连环22问,你能坚持到第几问?(Spring高频问题)(一)
|
Linux 开发工具 数据安全/隐私保护
Appuploader安装指南
Appuploader安装指南
|
Java 应用服务中间件 Spring
@Autowired的这些骚操作,你都知道吗?
@Autowired的这些骚操作,你都知道吗?
@Autowired的这些骚操作,你都知道吗?
|
TensorFlow 算法框架/工具
Python-Tensorflow基础(二)变量 Fetch Feed 使用
Python-Tensorflow基础(二)变量 Fetch Feed 使用
198 0