Desværre, tror jeg ikke det kan lade sig gøre at sortere en DataTable på denne måde. Du kan sortere efter bestemte kolonner, men da vil din kolonne blive tolket som tekst, og dermed sorteret som tekst.
Der er dog et par muligheder alligevel: Enten kan du håndtere sorteringen når du henter data fra databasen, og bruge den SQL query jeg foreslog i min første post.
En anden mulighed er først at kopiere tekst-strengene til en List<sting> og derefter håndtere sorteringen. En List<string> har en Sort metode, som giver mange flere muligheder end man har på en DataTable. Her er lidt testkode:
private void test() { //Først opretter jeg en DataTable jeg kan teste på. DataTable dt = new DataTable(); dt.Columns.Add("tekst", typeof(string));
dt.Rows.Add("1000 bla"); dt.Rows.Add("20 bla bla"); dt.Rows.Add("300 bla bla bla");
//Nu oprettes en List<string>. List<string> tekstList = new List<string>();
//Værdierne kopieres til listen foreach (DataRow row in dt.Rows) tekstList.Add((string)row["tekst"]);
//Listen sorteres tekstList.Sort(new Comparison<string>(delegate(string tekst1, string tekst2) { int tal1 = int.Parse(tekst1.Substring(0, tekst1.IndexOf(' '))); int tal2 = int.Parse(tekst2.Substring(0, tekst2.IndexOf(' ')));
return tal1.CompareTo(tal2); })); //Nu er tekstList sorteret. }
Men det passer desværre ikke "helt nedover min løsning endnu" :)
Din sql query virker ikke på den MySQL jeg bruger.
Set andet eksempel tager kun hånd om et felt fra min datatable (ved godt at det var det jeg viste i eksemplet, beklager) jeg skulle gerne have alle felter med på en eller anden måde.
int tal1 = int.Parse(tekst1.Substring(0, tekst1.IndexOf(' '))); int tal2 = int.Parse(tekst2.Substring(0, tekst2.IndexOf(' ')));
return tal1.CompareTo(tal2); })); //Nu er rowList sorteret. }
Jeg har ikke arbejdet så meget med MySql, så jeg kan desværre ikke lige mikse en tilsvarende query til MySql sammen. Men det kan helt sikkert lade sig gøre. Men koden herover bør også virke.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.