Tengo esta lista de autos

ICollection<Cars> Cars

Y también tengo un solo objeto de automóvil, que sé que está en la colección IC, ¿cómo obtengo el índice / posición del automóvil en la lista? Necesito agregarlo a una lista de cadenas

Esto es lo que tengo hasta ahora:

var index = cars.Where(b=> b.Id == car.id).Single().iWantTheIndex
stringList.Add(index)

¿Alguna idea?

3
Ayo Adesina 15 nov. 2017 a las 18:13

2 respuestas

La mejor respuesta

Si desea utilizar una colección indexada, debe utilizar IList<T>, no ICollection<T>. Un ICollection<T> es algo que puede enumerar, agregar y eliminar elementos y obtener el recuento, eso es todo. Un IList<T> es una colección en la que los elementos están en un orden específico y se puede acceder a ellos según su posición en la lista.

Debido a que un ICollection<T> no necesariamente representa una colección ordenada, no puede obtener un "índice" significativo de un elemento. Los artículos no necesariamente tienen una posición.

11
Servy 15 nov. 2017 a las 15:22

Esto le dará el índice de la iteración actual :

var index = cars.Select((c, i) => new{ Index = i, Car = c })
                .Where(item => item.Car.Id == car.id)
                .Single()
                .Index;

stringList.Add(index);

Tenga en cuenta que la siguiente iteración puede tener un orden diferente (dependiendo de la implementación real de su ICollection<>) y puede resultar en un índice completamente diferente, así que tenga cuidado para qué usa este índice. .

0
nvoigt 16 nov. 2017 a las 09:20