Я думаю, что вы уже на правильном пути с вашей функцией comparer
. Он сравнивает два T, сравнивая даты их.
Чтобы обработать параметр inFromTime
для BinarySearch
, вы можете создать фиктивное событие с правильным значением TimeStamp
и передать его в BinarySearch
.
Кроме того, просто чтобы убедиться: список отсортирован по полю времени? В противном случае двоичный поиск не будет работать.
Редактировать
Эта проблема сложнее, чем я думал. Решение, которое поможет вам:
- Создайте класс адаптера, который представляет ваш EventList как IList.
- Используйте метод расширения BinarySearch в IList для поиска.
К сожалению, нет встроенного метода расширения BinarySearch , поэтому вам придется написать свой собственный. В случае, если вы пишете свой собственный поиск, может не стоить дополнительных усилий, чтобы поместить его в метод расширения. В этом случае, возможно, лучше всего реализовать собственный алгоритм BinarySearch в классе EventList.
Другой вариант будет, если существует форма BinarySearch, которая принимает делегата, который извлекает соответствующий ключ из T, но который также недоступен.