C# - Is it possible to sync a Queue to a List, or is there a better option?

I have a bit of a interesting problem in that I’m using a Queue to manage a endless runner pool. However, I just realized that the items in the queue can’t be accessed and selected for quick modification.

Temporarily, I’ve also added a List, but without being constantly updated, that list does not stay synced to the positions of the object - for instance, 5 in the List could be at the very back of the track, while at the start it would reference the 5th track piece on screen.

My major goal is to do things like mark the last track piece that a player actively touched before they died,
or modify a track in a event system. Having a list also helps keep track of spawning positions.

What option would be best for me to use here?

Your best bet if you are truly concerned about performance is to try several methods, profiling each until you find the one that works best for your particular use case.
If your queue has a known maximum size you might want to use an array with pointers and create a circular queue that way. That would be the fastest, but it’s expensive to expand the maximum size and if you need access to more than basic functionality can be a little advanced to implement as a generic IEnumerable class.