Yes. You want a reference of one feature class not all feature classes in the feature dataset. If a feature dataset contains 20 feature class your logic is creating 20 feature class objects in memory although you are not using it. IDatasetName object supply object name info and not the object itself. When you debug your logic you may notice a delay on _ds.Subsets and _ws.get_Datasets statements. I modified your code to use IDatasetName. If you prefer less code then use IWorkspace2.get_NameExists method instead of iterating through the datasetnames. ESRI.ArcGIS.Geodatabase.IEnumDatasetName _ed = _ws.get_DatasetNames(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureDataset); ESRI.ArcGIS.Geodatabase.IDatasetName _ds = null; IFeatureClass _fc = null; while ((_ds = _ed.Next()) != null) { if (_ds.Name==_datasetName) { ESRI.ArcGIS.Geodatabase.IEnumDatasetName _dsed = _ds.SubsetNames; ESRI.ArcGIS.Geodatabase.IDatasetName _dsfc = null; while ((_dsfc = _dsed.Next()) != null) { if (_dsfc.Name==aFeatureClassName) { IName name = _dsfc as IName; IDataset dataset = name.Open() as IDataset; _fc = (ESRI.ArcGIS.Geodatabase.IFeatureClass)dataset; break; } } } if (_fc != null) { break; } } _ed.Reset();