Search Differences Featureclass vs Featurelayer

What is the difference between searching a featurelcass versus a featurelayer?


       Returns an object cursor that can be used to fetch feature objects selected by the specified query.


     Use this method to return a read-only cursor of the layer’s features.

There is ‘Search; method in both IFeatureLayer and IFeatureClass Interface. Both returns cursor based on search criteria. What is difference between these?. This question is obivious for a novice. If you have gone through Help documentation you can figure out easily. Else here is a straight answer

They are the same unless you have a definition query assigned to the layer. In that case the FeatureLayer.Search will only return features that also meet the definition query criteria, while FeatureClass.Search will return all features regardless of definition query. 

This FeatureLayer Search method will not work on joined fields. If the FeaureLayer has any joins, you should use the IGeoFeatureLayer::SeachDisplayFeatures method instead.

You cannot use the cursor returned by IFeatureLayer::Search to update features, instead use IFeatureClass::Update.

I hope this post helps you to understand difference in search method between two interfaces. If you are beginner this tip will be very useful to you. If you have any doubts/clarifications, please feel free to comment. Thanks!




Tags: , , ,

3 Responses to “Search Differences Featureclass vs Featurelayer”

  1. James Rae Says:

    Your post has saved me hours of headache! A million thanks!

  2. iamlaksh1 Says:


  3. Noam Gal Says:

    The question I am trying to figure out is what’s the difference between FeatureClass.Search and FeatureClass.Update.

    I understand the search should be readonly, and update is for… well.. updating. But the ESRI help on search has this:
    “The features returned by a non-recycling cursor may be modified and stored with polymorphic behavior.”
    AND this:
    “Feature cursors returned from the Search method cannot be used to update the features in the cursor. The feature cursor returned from the Update method should be used to update those features.”

    So what gives?

    And of course, I currently use Search, and change and store the changes afterwards. How does that settle with the help?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: