public IEnumerable <ZoneId> GetAllZoneIds() { HashSet <ZoneId> set = new HashSet <ZoneId>(); uint[,] zoneIds = ZoneIds; int upperBound1 = zoneIds.GetUpperBound(0); int upperBound2 = zoneIds.GetUpperBound(1); for (int lowerBound1 = zoneIds.GetLowerBound(0); lowerBound1 <= upperBound1; ++lowerBound1) { for (int lowerBound2 = zoneIds.GetLowerBound(1); lowerBound2 <= upperBound2; ++lowerBound2) { ZoneId id = (ZoneId)zoneIds[lowerBound1, lowerBound2]; if (id != ZoneId.None && !set.Contains(id)) { set.Add(id); yield return(id); } } } }