Имам базов клас Event
с DateTime
член TimeStamp
. Много други класове събития ще произлязат от това.
Искам да мога да търся бързо списък със събития, така че бих искал да използвам двоично търсене.
(Данните в списъка са сортирани по времево клеймо, но може да има дублиращи се времеви клеймо за събития, настъпили едновременно)
Така че започнах да пиша нещо подобно:
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
}
}
Проблемът е, че BinarySearch приема само T (така - тип Event
) като параметър, докато аз искам да търся въз основа на член на T - TimeStamp.
Какъв би бил добър начин да се подходи към това?