title: Sorting a ListBox of objects by attributes
body: <p>I have a list created by:</p>
  
  <pre><code>List&lt;Song&gt; SongList = new List&lt;Song&gt;();
  </code></pre>
  
  <p>Populated by a bunch of:</p>
  
  <pre><code>SongList.Add(new Song(songID, "Dirt", "Alice in Chains", "Rooster", "Rock", "02:32"));
  </code></pre>
  
  <p>The details of songs are populated into a ListBox by:</p>
  
  <pre><code>private void songTitle_TextChanged(object sender, EventArgs e)
  {
      i = 0;
  
      for (; i &lt; songTitle.Text.Length; i++)
      {
          songResultBox.Items.Clear();
          var songResult = from song in SongList
          where song.SongTitle != null &amp;&amp; song.SongTitle.Length &gt;= songTitle.Text.Length
              &amp;&amp; songTitle.Text == song.SongTitle.Substring(0, i+1)
          select new { sId = song.SongID, album = song.SongAlbum, artist = song.SongArtist, title = song.SongTitle, 
              genre = song.SongGenre, length = song.SongLength };
  
          foreach (var item in songResult)
          {
              songResultBox.Items.Add(new Song(item.sId, item.album, item.artist, item.title, item.genre, item.length));
                  songResultBox.DisplayMember = "FullName";
                  songResultBox.ValueMember = "songID";
          }
      }
  }
  </code></pre>
  
  <p>Question is: How would I create a button (or 4 in fact) that took the contents of the ListBox 'songResultBox' and sorted its contents by title, album, artist, genre etc.</p>