[GIS] Get IFeatureLayer from ILayer using ArcGIS Engine

arcgis-10.1arcgis-enginearcobjectsfeature-layer

I try to select object from layer by name. I think i found sollution here.
First problem i got is that i use GroupLayer. So i made research how to get subLayer from GroupLayer. Sollution is here. Now i have a problem how to get IFeatureLayer if i already have ILayer from where i need to select object.

var mapControl = form.axMapControl2.ActiveView.FocusMap;

var basemapCompositeLayer = mapControl.Layer[0] as ICompositeLayer;
var basemapSubLayer = basemapCompositeLayer.Layer[0];
var featureLayer1 = basemapSubLayer as IFeatureLayer; // always NULL

Or this is because that Layer isn't Featured by default?

Best Answer

based on the conversation here is the code:

IMap mapControl = form.axMapControl2.ActiveView.FocusMap;
ICompositeLayer basemapCompositeLayer = (ICompositeLayer) mapControl.Layer[0];
ILayer basemapSubLayer = basemapCompositeLayer.Layer[0];
if (basemapSubLayer.Valid)
{
    if (basemapSubLayer is IFeatureLayer)
    {
        IFeatureLayer featureLayer1 = (IFeatureLayer) basemapSubLayer;
        // do your selection here
    }
    else if (basemapSubLayer is ICompositeLayer)
    {
        ILayer nextDown = (basemapSubLayer as ICompositeLayer).Layer[0];
        if (nextDown is IFeatureLayer)
        {
            IFeatureLayer featureLayer1 = (IFeatureLayer)nextDown;
            // do your selection here
        }
    }
}
Related Question