I need to do some operation with every combinations of features in two FeatureClasses. The "for" iterating operator is very very slow-working, so I decided to try "while" operator and using FeatureCursor. So nested iteration I have like below: IFeatureCursor fcur1 = fc1.Search(null, false); IFeatureCursor fcur2 = fc2.Search(null, false); IFeature f1 = fcur1.NextFeature(); IFeature f2 = fcur2.NextFeature(); while (f1 != null) { //external cycle code MessageBox.Show("external cycle FID " + f1.Value[0].ToString()); while (f2 != null) { //internal cycle code MessageBox.Show("internal cycle FID " + f1.Value[0].ToString()); f2 = fcur2.NextFeature(); } f1 = fcur1.NextFeature(); } For example, there are 3 features in each FeatureClass fc1 and fc2. [![enter image description here][1]][1] I use a MessageBoxes to show FID of feature f1 to understand what happens in external and internal iterations. The expected order of MessageBoxes is: external cycle FID 0 internal cycle FID 0 internal cycle FID 0 internal cycle FID 0 external cycle FID 1 internal cycle FID 1 internal cycle FID 1 internal cycle FID 1 external cycle FID 2 internal cycle FID 2 internal cycle FID 2 internal cycle FID 2 But result of my code is: external cycle FID 0 internal cycle FID 0 internal cycle FID 0 internal cycle FID 0 external cycle FID 1 external cycle FID 2 So, external cycle operates with every feature f1, but internal cycle gets the first feature f1 only. Why another features f1 doesn't go to internal cycle? [1]: https://i.sstatic.net/c4x9D.jpg