Yes, that is what I was doing, but still molasses slow. But I stumbled upon a solution that works much better: cast your featurelayer to a BasicFeatureLayer which has a ShapeType property. This little snippet creates a list of selected layers that match a specified geometry type. Fore some reason GeoNet doesn't give me the option for inserting "code".
dctLookup = new Dictionary<string, esriGeometryType>();
dctLookup.Add("POINT", esriGeometryType.esriGeometryPoint);
dctLookup.Add("LINE", esriGeometryType.esriGeometryPolyline);
dctLookup.Add("POLYGON", esriGeometryType.esriGeometryPolygon);
selLays = MapView.Active.GetSelectedLayers();
foreach (Layer lay in selLays)
if (lay.MapLayerType == MapLayerType.Operational)
{
pBFL = lay as BasicFeatureLayer;
if (pBFL != null)
{
for (int i = 0; i < lstTypes.Count; i++)
{
if (pBFL.ShapeType == dctLookup[lstTypes[i]])
{
lstLays[i] = lay;
}
}
}
}
return lstLays;