On Feb 20, 12:31 pm, "jwilson128" <jwilson...@yahoo.comwrote:

I am looking for some help on the best type of collection to use and/

or best way to implement the collection with the following

functionality:

I have defined an object to represent an interest rate:

Public Class IRFcast

Public CloseDate As Date

Public RateIndex As String

Public RateClose As Double

End Class

I would like to define a collection of these interest rate objects

(there could be a large number of them - tens of thousands) such that

they can be quickly searched on a CloseDate and RateIndex combination.

Furthermore, I need to implement a search that will return (again, as

quickly as possible) the IRFcast object with a RateIndex=the searched

RateIndex and the maximum CloseDate<=the searched CloseDate.

Any suggestions on the best path to pursue here would be much

appreciated.

Hi,

I'm assuming that CloseDate and RateIndex can uniquely identify an

IRFcast object. Write a custom collection that internally uses two

hashtables (Dictionary<Of Tor Hashtable). We'll call them A and B.

The first hashtable (A) will cross reference a combination the

CloseDate and RateIndex fields to an IRFcast object. The second

hashtable (B) will cross reference the RateIndex field to a sorted

list (SortedList, SortedList<Of T>, or an array that is manually

sorted) of IRFcast objects with the same RateIndex field.

The first search use case can be done by using hashtable A. It is a

O(1) operation.

The second search use case can be done by using hashtable B to locate

the sorted list of IRFcast objects of like RateIndex and then doing a

binary search on that list. That is a O(log(n')) average case

operation where n' is the average distribution of IRFcast objects to a

RateIndex.

Brian