I have 17 years of experience in development, highly skilled in C#.NET and data structures and optimization.
To give you an optimal solution, you have to tell me how this data will be used:
- The images will be mostly accessed in random order or in sequential order?
- Is there a requirement to quickly place a new image at a random position, or new images will mostly be placed on front or back? They will be inserted, they will replace another image, or both?
- What is more critical: time spent to access one image, or time spent to move one image?
Depending on this answers, one possible solution is to use two different data structures: one simple array that holds the images and their paths and one structure that is optimized to have it's elements moved at will, that will hold only the indexes to the array. This way, you won't need to move all the image around in memory, just move one integer.
I will deliver the structures and an unit test of it, that helps to check its correctness and also serve as an example of use. And I will only charge after the job is finished, verified and has your approval.