在SortedDictionary中查找最接近的值

我有一个SortedDictionary

SortedDictionary myDict; 

现在我想找到X之上的第一个值。我可以做这样的事情

 foreach (var iKey in MyDict.Keys) { if (iKey >= thresholdKey) { foundKey = iKey; break; } } 

但这并不是明智的表现。
还有更好的建议吗?
(在集合中是否有一种方法可以像二进制搜索SortedDictionary那样?)

虽然理论上,找到大于给定值的最小项是可以在二进制搜索树上有效执行的操作(这是SortedDictionary的实现方式),但SortedDictionary不会公开您执行此类操作的方法。搜索该数据类型。

您需要使用二进制搜索树的不同实现,以便有效地执行此类搜索,同时仍使用相同类型的数据结构。 没有合适的.NET类型; 你需要使用第三方实现(其中有很多)。

你可以尝试,如果这更快。 但我想只有你多次执行搜索才会更快。

 var keys = new List(myDict.Keys); int index = keys.BinarySearch(thresholdKey); 

使用Sorteddictionary上的.toList()创建一个临时列表n现在,因为这会产生一个List n

  n.Find(item =>item >20) 

检索匹配的第一个键,

我不知道这是否有比foreach更好的性能,但这应该工作:

 var foo = myDict.FirstOrDefault(i => i.Key > thresholdKey);