Move multiple items in a list
<p>I have a list class that implements <code>IEnumerable&lt;T&gt;</code>.<br>
Type T is a complex class with a string member as unique identifier. But it's enough to take just <em>int</em> as element type for explanations.</p>

<p>I want to move multiple items one step to left.<br>
Example:<br>
Original list: <strong><em>0</strong>, 1, 2, <strong>3</strong>, <strong>4</strong>, 5</em><br>
Now all bold items (0,3,4) should be moved to left (as far as possible).<br>
Result list: <strong><em>0</strong>, 1, <strong>3</strong>, <strong>4</strong>, 2, 5</em>  </p>

<p>Is there a good algorithm to do that? Maybe just with LINQ.</p>

<p>Edit: Answers for a <code>List&lt;T&gt;</code> list are welcome. My class has similar methods. (Thanks for hint by TylerOhlsen.)<br>
Edit2: One selected item should not pass another selected item.</p>
