Why not just return an IEnumerable<T> ? If you just want users to list without changing it *, IEnumerable is the obvious choice.
If you want to have a read-only interface on the LinkedList interface, you can wrap the LinkedList, forward the read-only methods to a packed list, and reject any changes.
*) Keep in mind that neither ReadOnlyCollection nor IEnumerable will allow callers to change the state of objects in the case of a set of reference types. If objects also need to be read, you need to implement this as part of your type.
source share