<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Deleting Selected Features in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354561#M9326</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;What is the best option to delete simple features from a shapefile progammatically after a user selects them randomly from the map?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I use a QueryFilter and IFeatureCursor to delete the selected features, then I would need to have a where clause that knows the OBJECTID of all the selected features.&amp;nbsp; No problem creating a where clause but this would seem like a rather long where clause at times.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I can also assign the feature layer selection set IDs to an IEnumIDs and then iterate over that and simply do something like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;featureClass.getFeature(featureLayer.getSelectionSet().getIDs().next()).delete();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a better alternative?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 19 Jan 2012 20:50:12 GMT</pubDate>
    <dc:creator>LeoDonahue</dc:creator>
    <dc:date>2012-01-19T20:50:12Z</dc:date>
    <item>
      <title>Deleting Selected Features</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354561#M9326</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;What is the best option to delete simple features from a shapefile progammatically after a user selects them randomly from the map?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I use a QueryFilter and IFeatureCursor to delete the selected features, then I would need to have a where clause that knows the OBJECTID of all the selected features.&amp;nbsp; No problem creating a where clause but this would seem like a rather long where clause at times.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I can also assign the feature layer selection set IDs to an IEnumIDs and then iterate over that and simply do something like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;featureClass.getFeature(featureLayer.getSelectionSet().getIDs().next()).delete();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a better alternative?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jan 2012 20:50:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354561#M9326</guid>
      <dc:creator>LeoDonahue</dc:creator>
      <dc:date>2012-01-19T20:50:12Z</dc:date>
    </item>
    <item>
      <title>Re: Deleting Selected Features</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354562#M9327</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;There's a GP tool called DeleteRows that should only delete the selected rows.&amp;nbsp; Can you programmatically call that?&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/java_ao_adf/conceptualHelp/engine/index.html#//0001000004q4000000"&gt;http://help.arcgis.com/en/sdk/10.0/java_ao_adf/conceptualHelp/engine/index.html#//0001000004q4000000&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Or use ISelectionSet.search to get a cursor over which you can iterate and call delete().&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Jan 2012 15:09:41 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354562#M9327</guid>
      <dc:creator>TimWhiteaker</dc:creator>
      <dc:date>2012-01-20T15:09:41Z</dc:date>
    </item>
    <item>
      <title>Re: Deleting Selected Features</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354563#M9328</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Sure, I can call the Geoprocessing Delete Features tool.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There are at least three different ways I've identified to delete a feature.&amp;nbsp; Which one is preferred?&amp;nbsp; Geoprocessing seems to be the most straight forward.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you have queryFilter that can find features based on something besides the OID field, this works nice.&amp;nbsp; But if you wanted the user to interactively select features from the map, then you would have to build a where clause of all of those OIDs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Use a queryFilter to get a specific feature ID.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a queryFilter with where clause = to the OID of the selected feature in the map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryFilter = new QueryFilter();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;SPAN style="text-decoration:underline;"&gt;ex&lt;/SPAN&gt;: OBJECTID = 10
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String strWhereClause = fc.getOIDFieldName() + " = " + featLayer.getSelectionSet().getIDs().next();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryFilter.setWhereClause(strWhereClause);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use IFeatureClass.Update to populate IFeatureCursor.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IFeatureCursor updateCursor = fc.IFeatureClass_update(queryFilter, false);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IFeature feature = null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((feature = updateCursor.nextFeature()) != null) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; updateCursor.deleteFeature();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If the cursor is no longer needed, release it.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cleaner.release(updateCursor);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Iterate over the feature layer selection set.&amp;nbsp;&amp;nbsp; This seems like a hack. Maybe just use a for loop on the selection set count?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IEnumIDs oids = (IEnumIDs) featLayer.getSelectionSet().getIDs();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IEnumIDs oids2 = (IEnumIDs) featLayer.getSelectionSet().getIDs();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;while&lt;/STRONG&gt;((oids.next()) != -1){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fc.getFeature(oids2.next()).delete();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oids.reset();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
 &lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Use Geoprocessing.&amp;nbsp; Selected features in a feature layer will delete, or if you pass a feature class, then this deletes all of the features in the feature class.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GeoProcessor &lt;SPAN style="text-decoration:underline;"&gt;gp&lt;/SPAN&gt; = new GeoProcessor();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeleteFeatures delete = new DeleteFeatures();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delete.setInFeatures(featLayer);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.execute(delete, null);
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:37:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354563#M9328</guid>
      <dc:creator>LeoDonahue</dc:creator>
      <dc:date>2021-12-11T16:37:38Z</dc:date>
    </item>
    <item>
      <title>Re: Deleting Selected Features</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354564#M9329</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Instead of querying for the OIDs, you could iterate directly on the features.&amp;nbsp; Are you working in Java?&amp;nbsp; I don't work in Java, but I think the code would be something like&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;// Get a cursor on selected features
IFeatureCursor cursor = null;
featLayer.getSelectionSet().search(null, false, cursor);

// Delete all features in the cursor
IFeature feature = null;
while ((feature = cursor.nextFeature()) != null) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.deleteFeature(); // Or maybe try feature.delete()
}&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As for which is better, you're probably the best judge of that.&amp;nbsp; Generally I find running GP tools to be a little slower than writing my own code to do the same work.&amp;nbsp; However, using GP tools means I let ESRI handle their end of code development and maintenance, which usually makes my life a little easier.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:37:41 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354564#M9329</guid>
      <dc:creator>TimWhiteaker</dc:creator>
      <dc:date>2021-12-11T16:37:41Z</dc:date>
    </item>
    <item>
      <title>Re: Deleting Selected Features</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354565#M9330</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I am working with the Java API.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When you select features from the active view, or from the table, I'm guessing that somewhere in the background a selection is made based on ObjectID, because there isn't an acutal attribute or spatial query query being made. That is what I'm trying to reproduce (select random features, either from the feature table or from the map, and delete them).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FeatureLayer and FeatureClass have methods for deleting searched rows, which both take an IQueryFilter which means I need a "where clause".&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I almost think this is the best solution so far.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;nbsp;&amp;nbsp; fc = (IFeatureClass) featLayer.getFeatureClass();
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // Create a queryFilter with where clause 
&amp;nbsp;&amp;nbsp; queryFilter = new QueryFilter();
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // Create two enums.&amp;nbsp; One to iterate and one to get the IDs without a complex for statement
&amp;nbsp;&amp;nbsp; IEnumIDs oids = (IEnumIDs) featLayer.getSelectionSet().getIDs();
&amp;nbsp;&amp;nbsp; IEnumIDs oids2 = (IEnumIDs) featLayer.getSelectionSet().getIDs();
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; int count = featLayer.getSelectionSet().getCount();
&amp;nbsp;&amp;nbsp; int x = 0;&amp;nbsp; 
 
&amp;nbsp;&amp;nbsp; // Build a long WhereClause from all of the OBJECTIDs concatenated together.
&amp;nbsp;&amp;nbsp; StringBuilder sb = new StringBuilder();
&amp;nbsp;&amp;nbsp; sb.append(fc.getOIDFieldName() + " = ");
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; while((oids.next()) != -1){
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(x &amp;lt; ((count) - 1)){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.append(oids2.next());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.append(" OR " + fc.getOIDFieldName() + " = ");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&amp;nbsp;&amp;nbsp;&amp;nbsp; else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.append(oids2.next());
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; queryFilter.setWhereClause(sb.toString());
&amp;nbsp;&amp;nbsp; // Use IFeatureClass.Update to populate IFeatureCursor.
&amp;nbsp;&amp;nbsp; IFeatureCursor updateCursor = fc.IFeatureClass_update(queryFilter, false);
&amp;nbsp;&amp;nbsp; IFeature feature = null;
&amp;nbsp;&amp;nbsp; while ((feature = updateCursor.nextFeature()) != null) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; updateCursor.deleteFeature();
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // Clear the selection set, because deleting this way doesn't notify the table or the TOC to udpate.
&amp;nbsp;&amp;nbsp; featLayer.clear();

&amp;nbsp;&amp;nbsp; // optionally call updateContents on map document
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // If the cursor is no longer needed, release it.
&amp;nbsp;&amp;nbsp; Cleaner.release(updateCursor);

&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FeatureClass has a getFeature method which from there I can delete the feature, if I know the ObjectID - my second code example of the three from the previous post.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This option seems to have side effects, such as:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;if you select and delete from the active view, all selected features will delete.&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;if you select and delete from the feature layer table, not all of the features will delete.&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;SPAN&gt;Geoprocessing has side effects when you delete, such as:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;the active view is auto refreshed after the delete.&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;if you pass a FeatureClass to Geoprocessor, all of the records are deleted.&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;if you pass a FeatureLayer to Geoprocessor, all of the selected feature are deleted, or all of them are deleted if you have no selection.&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:37:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354565#M9330</guid>
      <dc:creator>LeoDonahue</dc:creator>
      <dc:date>2021-12-11T16:37:43Z</dc:date>
    </item>
    <item>
      <title>Re: Deleting Selected Features</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354566#M9331</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Did you try this line?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;featLayer.getSelectionSet().search(null, false, cursor);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If it works, it would be fewer lines of code and might be more efficient since you aren't looping through OIDs to create a whereclause.&amp;nbsp; Your code would become:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp; // Get a cursor on selected features
&amp;nbsp;&amp;nbsp; IFeatureCursor cursor = null;
&amp;nbsp;&amp;nbsp; featLayer.getSelectionSet().search(null, false, cursor);

&amp;nbsp;&amp;nbsp; // Delete all features in the cursor
&amp;nbsp;&amp;nbsp; IFeature feature = null;
&amp;nbsp;&amp;nbsp; while ((feature = cursor.nextFeature()) != null) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.deleteFeature(); // Or maybe try feature.delete()
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // Clear the selection set, because deleting this way doesn't notify the table or the TOC to udpate.
&amp;nbsp;&amp;nbsp; featLayer.clear();

&amp;nbsp;&amp;nbsp; // optionally call updateContents on map document
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // If the cursor is no longer needed, release it.
&amp;nbsp;&amp;nbsp; Cleaner.release(cursor);&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 16:37:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/deleting-selected-features/m-p/354566#M9331</guid>
      <dc:creator>TimWhiteaker</dc:creator>
      <dc:date>2021-12-11T16:37:46Z</dc:date>
    </item>
  </channel>
</rss>

