05. maj 2007 - 08:38Der er
8 kommentarer og 1 løsning
ArrayList.Sort() laver vrøvl!
Hej folkens,
Hvorfor er det lige at min ArrayList VIL placere A forkert på en sorteret liste???
Se lige eksemplet her:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Collections;
namespace ArrayList_Exempel { public partial class Form1 : Form { ArrayList liste = new ArrayList(); public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { liste.Add("DDD"); // Smider nogle objekter ind :) liste.Add("AAA"); liste.Add("EEE"); liste.Add("BBB"); liste.Add("CCC"); liste.Add("XXX"); liste.Sort(); // Sorterer listen for (int i = 0; i < liste.Count; i++) { listBox1.Items.Add(liste[i]); // Placerer de sorterede elementer i listboxen } } } }
Problemet her er at resultatet bliver det her:
BBB CCC DDD EEE XXX AAA <-- Hvad fanden laver den i bunden af listen ?
Håber der er nogen der kan forklarer mig hvorfor - og måske komme med en løsning så AAA rent faktisk fremkommer øverst - som det vel burde her!
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
"If you try the 'Intl. Text 1', you will (depending on your language) usually not see any difference between 'invariant', 'local PC', and 'en-US'. Only the 'da-DK' will bring a difference."
Damnit! man :P - kun danmark der har fucked op på det her :P
Nej, MS har jo et verdensomspændende marked, så de skal tage hensyn til alle. Men du kan jo kode dig ud af det, som artiklen siger. Her bruger jeg "InvariantCulture" - jeg tror den virker, men er ikke sikker på om der er en anden. Du skal lave en klasse:
private class MinSort : IComparer { int IComparer.Compare(object x, object y) { string src = x.ToString(); string trg = y.ToString(); int result = string.Compare(src, trg, true,CultureInfo.InvariantCulture); return result; } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Collections; using System.Globalization;
namespace ArrayList_Exempel { public partial class Form1 : Form { ArrayList liste = new ArrayList(); public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { liste.Add("DDD"); liste.Add("AAA"); liste.Add("EEE"); liste.Add("BBB"); liste.Add("CCC"); liste.Add("XXX"); liste.Sort(new MinSort()); for (int i = 0; i < liste.Count; i++) { listBox1.Items.Add(liste[i]); } } } public class MinSort : IComparer { int IComparer.Compare(object x, object y) { string src = x.ToString(); string trg = y.ToString(); int result = string.Compare(src, trg, true, CultureInfo.InvariantCulture); return result; } } }
Mange mange tak :) - nu er min AA kommet i toppen :)
hmm ok :) - rigtigt mange tak for hjælpen så erik :) - super god support :)
Ha' det rigtigt godt :)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.