private static void AddFeaturesToShapeFileFeatureLayer(ShapeFileFeatureLayer shapeFileFeatureLayer, Collection <Feature> features) { shapeFileFeatureLayer.ReadWriteMode = GeoFileReadWriteMode.ReadWrite; shapeFileFeatureLayer.SafeProcess(() => { List <string> columnNames = shapeFileFeatureLayer.GetDistinctColumnNames().ToList(); shapeFileFeatureLayer.FeatureSource.BeginTransaction(); foreach (var columnName in features[0].ColumnValues.Keys) { if (!columnNames.Contains(columnName)) { shapeFileFeatureLayer.FeatureSource.AddColumn(new FeatureSourceColumn(columnName, DbfColumnType.Character.ToString(), 100)); } } shapeFileFeatureLayer.FeatureSource.CommitTransaction(); foreach (Feature feature in features) { shapeFileFeatureLayer.EditTools.BeginTransaction(); shapeFileFeatureLayer.EditTools.Add(feature); shapeFileFeatureLayer.EditTools.CommitTransaction(); } }); }