Здравствуйте, Barbar1an, Вы писали:
B>но нам нужно все равно передать элемент для поиска, а его нет, есть только значения поля, и создать его нельзя потому E это шаблонный параметр который нельзя создать
При желании можно немного костылей нагородить. Для поиска передавать null (default(T)), а действительно искомое значение прописать в своей реализации IComparer.
Что-то типа:
public class BinaryComparer<T> : IComparer<T>
{
Func<T, int> _comparer;
public BinaryComparer(Func<T, int> comparer)
{
_comparer = comparer;
}
public int Compare(T x, T y)
{
return _comparer(x);
}
}
...
var i = Entries.BinarySearch(null, new BinaryComparer<E>(x => x.A.CompareTo(10))); // Поиск элемента, у которого A == 10
Ну, либо свой бинарный поиск написать, он достаточно простой.