EDITAR: si solo está utilizando List<>ay solo necesita el índice, entonces List.FindIndexes el mejor enfoque. Dejaré esta respuesta aquí para aquellos que necesitan algo diferente (por ejemplo, encima de cualquiera IEnumerable<>).
Utilice la sobrecarga de los Selectcuales toma un índice en el predicado, por lo que transforma su lista en un par (índice, valor):
var pair = myList.Select((Value, Index) => new { Value, Index })
.Single(p => p.Value.Prop == oProp);
Luego:
Console.WriteLine("Index:{0}; Value: {1}", pair.Index, pair.Value);
O si solo desea el índice y lo está usando en varios lugares, podría escribir fácilmente su propio método de extensión, que en Wherelugar de devolver los elementos originales, devolvió los índices de esos elementos que coincidían con el predicado.
int index?