Given a list of names like {`Name1`, `Name2`, `Name3`, `Name10`} I'd like to find the first available name, which in this case would be `Name4`, but if the names were contiguous, the next available would have been `Name5`.

The list is **not** sorted.

I found [Efficient algorithm to find first available name](https://stackoverflow.com/questions/4696257/efficient-algorithm-to-find-first-available-name) which seems to have some nice algorithms, but I'm unsure if I can achieve this in LINQ.

Is it possible? Which methods will work best?