ellisrj

Process IFeatureCursor results many times without re-applying query/filter

Discussion created by ellisrj on May 7, 2013
Latest reply on May 10, 2013 by Hornbydd
I have a spatial filter performing as I want it to, returning me an IFeatureCursor object that I can loop through. I want to be able to loop through the IFeatureCursor object more than once without re-applying the filter, the spatial filtering can take some time to apply in large data sets. Is there a method available for this, like 'IFeature.FirstFeature()' rather than having to re-apply the filter and start wiith 'IFeature.NextFeature()' again? Code below.

Thanks

Rob

Dictionary<int, Dictionary<int, string>> FIDs = new Dictionary<int, Dictionary<int, string>>();
while ((pFeat = pFeatCursor.NextFeature()) != null)
{
 int thisFID = (int)pFeat.Value[fidIdx];
 FIDs.Add(thisFID, new Dictionary<int, string>());


 ISpatialFilter SPF = new SpatialFilter();
 SPF.SpatialRel = esriSpatialRelEnum.esriSpatialRelWithin;
 SPF.Geometry = pFeat.ShapeCopy;


 IFeatureCursor IFC2 = resultFeatLay.Search(SPF, false);
 IFeature IF2;

 int theCount = 1;
 while ((IF2 = IFC2.NextFeature()) != null)
 {
  FIDs[thisFID].Add((int)IF2.Value[fidIdx], (string)IF2.Value[splitIdx]);
  theCount += 1;
 }

 //THIS IS MY ATTEMPT AT STARTING THE LOOP AGAIN, TO NO AVAIL
 while ((IF2 = IFC2.NextFeature()) != null)
 {
  string stophere = "";
 }

}

Outcomes