//删除FeatureClass中所有Feature public static void DeleteFeature(IFeatureClass pFeatureClass, string condtion, out Exception Error) { Error = null; if (pFeatureClass == null) { return; } IDataset dataset = pFeatureClass as IDataset; IWorkspace workspace = dataset.Workspace; IWorkspaceEdit workspaceEdit = workspace as IWorkspaceEdit; workspaceEdit.DisableUndoRedo(); workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); IFeatureCursor pFeatureCursor = null; if (condtion != "") { IQueryFilter pFilter = new QueryFilterClass(); pFilter.WhereClause = condtion; pFeatureCursor = pFeatureClass.Update(pFilter, false); } else { pFeatureCursor = pFeatureClass.Search(null, false); } IFeature pFeature = pFeatureCursor.NextFeature(); int count = 0; try { while (pFeature != null) { // pFeatureCursor.DeleteFeature(); pFeature.Delete(); count++; if (count == 500) { pFeatureCursor.Flush(); count = 0; } pFeature = pFeatureCursor.NextFeature(); } if (count > 0) { pFeatureCursor.Flush(); } } catch (Exception ex) { Error = ex; } System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor); workspaceEdit.StopEditOperation(); workspaceEdit.StopEditing(true); }
public bool StartEditing(IWorkspace TheWorkspace, bool IsUnversioned) // Start EditSession + create EditOperation { bool IsFileBasedGDB = (!(TheWorkspace.WorkspaceFactory.WorkspaceType == esriWorkspaceType.esriRemoteDatabaseWorkspace)); IWorkspaceEdit pWSEdit = (IWorkspaceEdit)TheWorkspace; if (pWSEdit.IsBeingEdited()) { MessageBox.Show("The workspace is being edited by another process."); return(false); } if (!IsFileBasedGDB) { IMultiuserWorkspaceEdit pMUWSEdit = (IMultiuserWorkspaceEdit)TheWorkspace; try { if (pMUWSEdit.SupportsMultiuserEditSessionMode(esriMultiuserEditSessionMode.esriMESMNonVersioned) && IsUnversioned) { pMUWSEdit.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMNonVersioned); } else if (pMUWSEdit.SupportsMultiuserEditSessionMode(esriMultiuserEditSessionMode.esriMESMVersioned) && !IsUnversioned) { pMUWSEdit.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMVersioned); } else { return(false); } } catch (COMException ex) { MessageBox.Show(ex.Message + " " + Convert.ToString(ex.ErrorCode), "Start Editing"); return(false); } } else { try { pWSEdit.StartEditing(false); } catch (COMException ex) { MessageBox.Show(ex.Message + " " + Convert.ToString(ex.ErrorCode), "Start Editing"); return(false); } } pWSEdit.DisableUndoRedo(); try { pWSEdit.StartEditOperation(); } catch { pWSEdit.StopEditing(false); return(false); } return(true); }