See this post from StackExchange: How to get index using LINQ? Qutoing the accepted answer:
An IEnumerable is not an ordered set.
Although most IEnumerables are ordered, some (such as Dictionary or HashSet) are not.
Therefore, LINQ does not have an IndexOf method.
Even if it did, it would not be any faster than iterating through the PartFeatures collection until you find your specific feature, because this is essentially what the "IndexOf" method does under the hood (see here).
Iterating until you find your feature will be just as fast as (or faster than) anything else. I would probably use a function that has the exact same implementation is the IndexOf method I linked to above:
Function IndexOfFeature(Features As PartFeatures, TargetFeature As PartFeature) As Integer
For i As Integer = 1 To Features.Count
If Features.Item(i) Is TargetFeature Then Return i
Next
Return -1
End Function