public City[] GetClosestCities(int originCityId, int numberOfCitiesToReturn) { DataServiceSoapClient dataService = new DataServiceSoapClient("DataServiceSoap", "http://156.35.98.19:9091/WS.Recomendation.Data/DataService.asmx"); var nearCitiesFromOrigin = dataService.GetDistancesByOriginCityId(originCityId) .OrderBy(distance => distance.DistanceInKm) .Take(numberOfCitiesToReturn).Select(distance => distance.DestinationCityId); var nearCitiesFromDestination = dataService.GetDistancesByDestinationCityId(originCityId) .OrderBy(distance => distance.DistanceInKm) .Take(numberOfCitiesToReturn).Select(distance => distance.OriginCityId); ISet <int> nearCitiesIds = new HashSet <int>(); nearCitiesIds.UnionWith(nearCitiesFromOrigin); nearCitiesIds.UnionWith(nearCitiesFromDestination); var cities = dataService.GetAllCities().Where(city => nearCitiesIds.Contains(city.Id)); return(cities.ToArray()); }