I am looking for a collection that has fast containment check and adding/removing methods (like HashSet<T>, approaching O(1) if T is implemented well), but that also has an order. That does not mean indexed access - it merely means that if I iterate over it, the order of elements is the same as the order in which I added them.
Is there something like that in C#? Does HashSet<T> even do the trick? (I couldn't find that info on MSDN, I checked HashSet<T> and HashSet<T>.GetEnumerator.)
If not, I was thinking of implementing it with a class that contains an internal HashSet<T> and an internal LinkedList<T>. The HashSet<T> would expose the adding, removing and containment check while the LinkedList<T> would expose the enumerator.