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 fast, so I'd like to use a binary search.
(The list-data is sorted on timestamp, but there might be duplicate timestamps for events that occurred simultaneously)
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 ?