3

我在内存中有几个中型数据集,我需要能够快速过滤和查找信息。数据集足够小,我不想在每次需要条目时都访问数据库,但又足够大,以至于我真的需要以某种方式索引数据。

目前,我正在使用带有一个或多个字典的 POCO 对象进行索引。当我需要通过特定键查找某些内容时,这非常有用,但有时情况并非如此。例如,我经常需要在特定日期时间范围内查找条目。有时我需要最低价格的条目。大多数情况下,查询会同时查看几个简单的键和一两个其他字段。

是否有任何工具、产品、库(针对 .NET 框架)可以帮助我解决这个问题?还是我需要拿起那本尘土飞扬的旧算法书并开始查看搜索树?

一个例子:

旅行

  • 出发代码
  • 目的地代码
  • 酒店代码
  • 房号
  • 日期
  • 价格

我需要查询类似于“让我在 2010 年 3 月 9 日到 2010 年 3 月 12 日之间进行最便宜的旅行,其中 DepartureCode=LAX DestinationCode=NYC”

4

2 回答 2

2

“最低价格”和“特定日期/时间范围”都可以使用排序集合和二分搜索来处理。SortedList/ SortedDictionary(或者SortedSet如果您使用的是 .NET 4.0)可能会在此处完成您需要的所有工作,只需相当少量的工作。

于 2010-03-09T15:47:32.717 回答
0

DataSet.Table("YourTable") .Select()方法怎么样?

Dim myRows() as DataRow = myDataSet.Tables("myTable").Select("Date>" & _
    myBeginDate & "AND Date<" & myEndDate)

编辑: 来自MSDN

数据视图构建

在创建 DataView 以及修改 Sort、RowFilter 或 RowStateFilter 属性时,DataView 会为基础 DataTable 中的数据建立索引。创建 DataView 对象时,请使用 DataView 构造函数,该构造函数将 Sort、RowFilter 和 RowStateFilter 值作为构造函数参数(以及基础 DataTable)。结果是索引构建一次。创建一个“空”DataView 并在之后设置 Sort、RowFilter 或 RowStateFilter 属性会导致索引至少被构建两次。

因此,如果您想要索引您的 DataSet,看起来 DataView 可以为您提供。

于 2010-03-09T15:46:54.600 回答