public static Dictionary <long, Tuple <double, double> > FindNodes(IEnumerable <long> nodeIds, OsmStreamSource source) { Queue <long> idQueue = new Queue <long>(); foreach (long id in nodeIds.OrderBy(n => n)) { idQueue.Enqueue(id); } var nodes = new Dictionary <long, Tuple <double, double> >(); while (idQueue.Count > 0 && source.MoveNextNode()) { if (source.Current().Id == idQueue.Peek()) { nodes.Add(idQueue.Dequeue(), new Tuple <double, double>((source.Current() as Node).Latitude.Value, (source.Current() as Node).Longitude.Value)); } } return(nodes); }