Skip to main content
 首页 » 编程设计

c#之快速搜索集合中的对象

2024年02月13日29freeliver54

我正在编写一个应该在数组内部进行快速搜索的 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);