title: Linq to Sql: select query with a custom order by
body: <p>We have following table, name it Products:</p>
  
  <pre><code>
     UserName    ProductName    SortOrder
     --------------------------------------
     U1          U1P1           2
     U1          U1P2           3
     U1          U1P3           5
     U2          U2P1           1
     U2          U2P2           2
     U3          U3P1           4          
  </code></pre>
  
  <p>UserName and ProductName can be anything. SortOrder for each UserName is incremental but can start at any index and there may be gap between them. <br />
  I need a query that sorts the data this way:</p>
  
  <pre><code>
     UserName    ProductName    SortOrder
     --------------------------------------
     U1          U1P1           2
     U2          U2P1           1
     U3          U3P1           4  
     U1          U1P2           3
     U2          U2P2           2
     U1          U1P3           5         
  </code></pre>
  
  <p>First row for each user is added then the second row and so on.<br />
  I am not sure if this is possible to be done in Linq to Sql or not.<br />
  Also keep in mind that there may be more that 10000 rows in the table so performance is important.</p>