如何在排序字典中找到两个键之间的点

Joe*_*l B 2 c# sorteddictionary

我有一个排序字典,包含测量数据点作为键/值对.为了确定非测量数据点的值,我想使用相应值的线性插值来推断两个已知键之间的值.我知道如果我有两个键/值对之间如何计算非测量数据点.我不知道的是如何找出它之间的关键.是否有比"for"循环更优雅的方式(我正在考虑函数/ LINQ查询)来确定我的数据点位于哪两个键之间?

Bro*_*ass 6

像这样的东西会起作用:

 dic.Keys.Zip(dic.Keys.Skip(1), 
              (a, b) => new { a, b })
         .Where(x => x.a <= datapoint && x.b >= datapoint)
         .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

这会使用它们被排序的事实遍历它们,并按顺序将所有两个键相互比较 - 因为一旦找到第一个匹配,LINQ就会变得很懒,遍历将停止.