我在内存中有几个中型数据集,我需要能够快速过滤和查找信息。数据集足够小,以至于每次我需要一个条目时,我都不希望每次进入数据库时遇到性能损失,但是我确实需要以某种方式索引数据。
目前,我正在使用带有一个或多个词典的POCO对象进行索引。当我需要通过特定键找到某些东西时,这非常有效,但有时情况并非如此。例如,我经常需要在特定的日期 - 时间范围内找到一个条目。有时我需要价格最低的入场券。大多数情况下,查询会同时查看几个简单的键和一个或两个其他字段。
是否有任何工具,产品,库(针对.NET框架)可以帮助我解决这个问题?或者我是否需要拿起那本尘土飞扬的旧算法书并开始查看搜索树?
一个例子:
旅行
我需要查询类似于“让我在2010-03-09和2010-03-12之间获得最便宜的旅行,其中DepartureCode = LAX DestinationCode = NYC”
答案 0 :(得分:2)
“最低价格”和“特定日期/时间范围”都可以仅使用已排序的集合和二进制搜索来处理。 SortedList
/ SortedDictionary
(或SortedSet
如果您使用的是.NET 4.0)可能会在此处执行您需要的所有操作,只需要相当少的工作量。
答案 1 :(得分:0)
DataSet.Table(“YourTable”).Select()方法怎么样?
Dim myRows() as DataRow = myDataSet.Tables("myTable").Select("Date>" & _
myBeginDate & "AND Date<" & myEndDate)
编辑:来自MSDN
DataView构建
DataView为其构建索引 底层DataTable中的数据 DataView都是创建的,以及何时创建 Sort,RowFilter或RowStateFilter 属性被修改。创建时 一个DataView对象,使用DataView 采用Sort的构造函数, RowFilter和RowStateFilter值 作为构造函数参数(以及 基础DataTable)。结果 索引是一次构建的。创建 一个“空”DataView并设置 Sort,RowFilter或RowStateFilter 后来的属性导致了 索引建立至少两次。
因此,如果您想索引DataSet,看起来DataView可以为您提供。