public void GetPredictionsFromService(IList <Stop> stops) { foreach (var stop in stops) { var x = EndPoints.PredictionsUrl(stop.AgencyTag, stop.RouteTag, stop.Tag); var xml = _client.GetStringAsync(EndPoints.PredictionsUrl(stop.AgencyTag, stop.RouteTag, stop.Tag)).Result; var doc = XDoc.LoadXml(xml); /* * <prediction tripTag="7679393" * block="9718" * vehicle="1537" * dirTag="N____O_F00" * isDeparture="false" minutes="20" seconds="1220" epochTime="1503625693370" vehiclesInConsist="2"/> */ List <Prediction> preds = new List <Prediction>(); foreach (var predNode in doc.GetDescendantElements("prediction")) { var pred = new Prediction(); pred.Minutes = predNode.GetAttribute("minutes"); pred.Seconds = predNode.GetAttribute("seconds"); pred.EpochTime = predNode.GetAttribute("epochTime"); pred.IsDeparture = predNode.GetAttribute("isDeparture"); pred.DirTag = predNode.GetAttribute("dirTag"); pred.Vehicle = predNode.GetAttribute("vehicle"); pred.LocalTime = UtilsHelper.Instance.ConvertUnixTimeStamp(pred.EpochTime); preds.Add(pred); } stop.Predictions.ReplaceRange(preds.OrderBy(t => Convert.ToDouble(t.EpochTime))); stop.Prediction1 = preds.Count >= 1 ? preds[0] : null; stop.Prediction2 = preds.Count >= 2 ? preds[1] : null; stop.Prediction3 = preds.Count >= 3 ? preds[2] : null; } }