public List <Trip> GetTripWithRange(QueryBuilder filterTrip, LocationRange departureLocRange) { tripDatabaseLock.EnterReadLock(); try { tripDatabase = XDocument.Load(tripDatabasePath); var baseQuery = (from t in tripDatabase.Descendants("Trip") where departureLocRange.contains(new Location(Convert.ToDouble(t.Element("DepartureLatitude").Value), Convert.ToDouble(t.Element("DepartureLongitude").Value))) select new Trip() { ID = Convert.ToInt32(t.Element("ID").Value), Owner = t.Element("Owner").Value, DepartureName = t.Element("DepartureName").Value, DepartureDateTime = Convert.ToDateTime(t.Element("DepartureDateTime").Value), ArrivalName = t.Element("ArrivalName").Value, ArrivalDateTime = Convert.ToDateTime(t.Element("ArrivalDateTime").Value), Smoke = Convert.ToBoolean(t.Element("Smoke").Value), Music = Convert.ToBoolean(t.Element("Music").Value), Cost = Convert.ToDouble(t.Element("Cost").Value), FreeSits = Convert.ToInt32(t.Element("FreeSits").Value), Notes = t.Element("Notes").Value, Modifiable = Convert.ToBoolean(t.Element("Modifiable").Value) }); IEnumerable <Trip> filteredQuery = FilterQuery(filterTrip, baseQuery); return(filteredQuery.ToList()); } finally { tripDatabaseLock.ExitReadLock(); } }
}//End SearchTrip #endregion private string[] NeighbourNodesInRange(LocationRange departureLocRange) { List <string> targetNeighbours = new List <string>(); foreach (ServiceNode neighbour in Neighbours) { /** The neighbour is within the range. */ if (departureLocRange.contains(neighbour.Location)) { targetNeighbours.Add(baseForwardAddress + neighbour.NodeName); } } return(targetNeighbours.ToArray()); }