我有这个车辆列表
ICollection<Cars> Cars
我也有一个车对象,我知道在ICollection中如何获得列表中汽车的索引/位置?我需要将它添加到字符串列表
这是我到目前为止所做的:
var index = cars.Where(b=> b.Id == car.id).Single().iWantTheIndex
stringList.Add(index)
有什么想法吗?
答案 0 :(得分:8)
如果您想使用索引集合,则应使用IList<T>
,而不是ICollection<T>
。 ICollection<T>
是您可以枚举,添加和删除项目以及获取所有项目的内容。 IList<T>
是一个集合,其中的项目按指定顺序排列,可以根据它们在列表中的位置进行访问。
因为ICollection<T>
并不一定代表有序集合,所以你无法获得有意义的&#34;索引&#34;一件物品。项目不一定拥有职位。
答案 1 :(得分:0)
这将为您提供当前迭代的索引:
var index = cars.Select((c, i) => new{ Index = i, Car = c })
.Where(item => item.Car.Id == car.id)
.Single()
.Index;
stringList.Add(index);
请注意, next 迭代可能有不同的顺序(取决于ICollection<>
的实际实现)并且可能会导致完全不同的索引,因此请小心使用这个索引。