/// <summary> /// Returns an array of layer IDs. This list of layer IDs correspond to Feature Layers. /// </summary> /// <returns>An array of layer ID <see cref="int"/>s.</returns> private int[] GetIdsOfLayersThatHaveMetadata() { var mapServer = (IMapServer3)_serverObjectHelper.ServerObject; string defaultMapName = mapServer.DefaultMapName; IMapServerInfo3 serverInfo = mapServer.GetServerInfo(defaultMapName) as IMapServerInfo3; IMapLayerInfos mapLayerInfos = serverInfo.MapLayerInfos; IMapLayerInfo3 layerInfo = null; var output = new List <int>(mapLayerInfos.Count); for (int i = 0; i < mapLayerInfos.Count; i++) { layerInfo = mapLayerInfos.get_Element(i) as IMapLayerInfo3; if (layerInfo.IsFeatureLayer) { output.Add(i); } } // Untested. ////var output = from layerInfo in mapLayerInfos.AsEnumerable() //// where layerInfo.IsFeatureLayer //// select layerInfo.ID; return(output.ToArray()); }
/// <summary> /// Returns a dictionary of feature layer IDs keyed by data source names. /// </summary> /// <returns>Returns a dictionary of feature layer IDs keyed by data source names.</returns> private Dictionary <string, List <int> > GetDistinctDataSourceInfo() { var mapServer = (IMapServer3)_serverObjectHelper.ServerObject; string defaultMapName = mapServer.DefaultMapName; var msDataAccess = (IMapServerDataAccess)_serverObjectHelper.ServerObject; IMapServerInfo3 serverInfo = mapServer.GetServerInfo(defaultMapName) as IMapServerInfo3; IMapLayerInfos mapLayerInfos = serverInfo.MapLayerInfos; var output = (from layerInfo in mapLayerInfos.AsEnumerable() where layerInfo.IsFeatureLayer select new { Id = layerInfo.ID, DataSource = ((IDataset)msDataAccess.GetDataSource(defaultMapName, layerInfo.ID)).Name }).GroupBy(a => a.DataSource, a => a.Id).ToDictionary(g => g.Key, g => g.ToList()); return(output); }