23. februar 2011 - 08:58Der er
2 kommentarer og 1 løsning
List sotering (windows forms)
Hej jeg har en liste hvor der kan forekomme dubletter, nu er mit spørgs mål så hvordan kan jeg få vist listen i en combobox uden at dubletterne bliver vist.
Min list inderholder:
Kundenavn kontonr saldo
det jeg skal havde vist i comboboxen er kundenavnet.
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Først må du sørge for at 2 instanser af din Kunde klasse kan sammenlignes korrekt med Equals metoden. Dette gøres nemt ved at implementere IEquatable<Kunde> interfacet. Du skal også override GetHashCode() metoden. Se eksemplet herunder:
public class Kunde : IEquatable<Kunde> { public string Kundenavn { get; set; } public string Kontonr { get; set; } public int Saldo { get; set; }
public bool Equals(Kunde other) { return this.Kundenavn.Equals(other.Kundenavn) && this.Kontonr.Equals(other.Kontonr); }
public override int GetHashCode() { return this.Kundenavn.GetHashCode() ^ this.Kontonr.GetHashCode(); } }
Læg mærke til at jeg kun sammenligner Kundenavn og kontonr i Equals metoden, dvs at selvom 2 duplikater har forskellig saldo, vil de alligevel tolkes samme kunde. Dette kan du eksperimentere med, så det passer best til dit projekt.
Nu kan du fjerne duplikater med 1 linje kode: List<Kunde> distinctList = kundelisteMedDuplikater.Distinct().ToList();
Herunder er et fuldt test-eksempel, som viser resultatet i en combobox. Eksemplet overrider formens OnLoad metode.:
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.