c# binarysearch a list<T> by a member of T
- by Pygmy
I have a baseclass Event with a DateTime member TimeStamp.
Lots of other event-classes will derive from this.
I want to be able to search a list of events (that can contain events with duplicate timestamps) fast, so I'd like to use a binary search.
So I started out writing something like this :
public class EventList<T> : List<T> where T : Event
{
private IComparer<T> comparer = (x, y) => Comparer<DateTime>.Default.Compare(x.TimeStamp, y.TimeStamp);
public IEnumerable<T> EventsBetween(DateTime inFromTime, DateTime inToTime)
{
// Find the index for the beginning.
int index = this.BinarySearch(inFromTime, comparer);
// BLAH REST OF IMPLEMENTATION
}
}
The problem is that the BinarySearch only accepts T (so - an Event type) as parameter, while I want to search based on a member of T - the TimeStamp.
What would be a good way to approach this ?