¿Cómo obtener el índice usando LINQ? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

Obtener la posición del elemento List <> en c # usando LINQ 9 respuestas¿Cómo obtener el índice de un elemento en un IEnumerable? 11 respuestas

Dada una fuente de datos como esa:

var c = new Car[]
{
  new Car{ Color="Blue", Price=28000},
  new Car{ Color="Red", Price=54000},
  new Car{ Color="Pink", Price=9999},
  // ..
};

¿Cómo puedo encontrar elíndice del primer automóvil que cumple una determinada condición con LINQ?

EDITAR:

Podría pensar en algo como esto, pero se ve horrible:

int firstItem = someItems.Select((item, index) => new    
{    
    ItemName = item.Color,    
    Position = index    
}).Where(i => i.ItemName == "purple")    
  .First()    
  .Position;

¿Será lo mejor resolver esto con un simple bucle antiguo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta