LINQを使用してインデックスを取得するにはどうすればいいですか? [重複] 質問する

LINQを使用してインデックスを取得するにはどうすればいいですか? [重複] 質問する

次のようなデータソースがあるとします。

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

LINQ を使用して、特定の条件を満たす最初の車のインデックスを見つけるにはどうすればよいですか?

編集:

次のようなことも考えられますが、見た目がひどいです:

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

これを単純なループで解決するのが最善でしょうか?

ベストアンサー1

myCars.Select((v, i) => new {car = v, index = i}).First(myCondition).index;

または少し短い

myCars.Select((car, index) => new {car, index}).First(myCondition).index;

または少し短い

myCars.Select((car, index) => (car, index)).First(myCondition).index;

おすすめ記事