Have you looked a iComparer?
Its used for custom comparisons,
You create a class implementing the IComparer, vs will auto-m add a function Compare, and using the x and y objects given, you can create your own comparison.
With this you just use (example with an ArrayList...):
FirstIndex = MyArray.BinarySearch(ItemToFind, MyIComparerClass)
This is good with custom classes/structures, or even searching in strings...