How to take the some elements of a list of random numbers and sort them?
Instead of shuffling items yourselves it's easier to apply random sort. So your logic can be rewritten in a single statement:

var random = new Random();

var result = Enumerable.Range(1, total)
    .OrderBy(i =&gt; random.Next())
    .Take(take)
    .OrderBy(i =&gt; i);