我正在编写一个应该在数组内部进行快速搜索的 C# 应用程序。 我有一个大集合,我正在从以下类型的对象文件中加载
public class Info {
public long Start { get; set; }
public long End { get; set; }
public string Info { get; set; }
...
}
我需要一种快速的方法来在该数组中找到一个对象 开始 <= SomeValue && End >= SomeValue
只需要第一个匹配。
请告诉我应该使用什么集合类型 并且可能是一种比仅遍历对象更快的算法。
解决方案
“间隔树”结构对我来说是最好的解决方案。这似乎比迭代集合中的项目快 30 倍以上,直到找到并且查找项目所用时间不到 1 毫秒。使用此实现 https://github.com/mbuchetics/RangeTree
非常感谢各位
请您参考如下方法:
使用 LINQ FirstOrDefault。这将返回集合中的第一个匹配项目,如果未找到任何内容,则返回 null。
infoList.FirstOrDefault(i => i.Start <= someValue && i.End >= someValue);
