コード例 #1
0
        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());
        }