Если возможно (извините, если это не так, и вы ограничены предыдущими вариантами), и если ваш сценарий использования должен работать с индексами, вам было бы лучше использовать общие списки (то есть: Список).
Тогда вы сможете правильно использовать FindIndex.
public class MyList : List<MyClass>
{
// implementation here
}
...
int index = listInstance.FindIndex(x => x.MyProperty == "ThePropertyValueYouWantToMatch");