GetVersionInRange(SortedDictionary <Version, string> availableVersions, VersionRange range) { for (int i = availableVersions.Count - 1; i >= 0; i--) { foreach (KeyValuePair <Version, string> pair in availableVersions.Reverse()) { if (range.ContainsVersion(pair.Key)) { return(new Tuple <Tuple <Version, string>, bool>(new Tuple <Version, string>(pair.Key, pair.Value), true)); } } } // Result, Found return(new Tuple <Tuple <Version, string>, bool>(default(Tuple <Version, string>), false)); }