private void OntdubbelvCardLijst() { // verwijderern van dubbele entries. We gooien de eerste weg door hem dirty te maken foreach (VCard vCard in vCardLijst) { vCard.Dirty = false; } for (int i = 0; i <= vCardLijst.Count - 2; i++) { for (int j = i + 1; j <= vCardLijst.Count - 1; j++) { if (vCardLijst[i].NetteNaam.Trim() == vCardLijst[j].NetteNaam.Trim()) { vCardLijst[i].Dirty = true; vCardLijst[j].adresLijst.AddRange(vCardLijst[i].adresLijst); vCardLijst[j].emailLijst.AddRange(vCardLijst[i].emailLijst); vCardLijst[j].telefoonNummerLijst.AddRange(vCardLijst[i].telefoonNummerLijst); } } } for (int i = vCardLijst.Count - 1; i >= 0; i--) { //Console.WriteLine("{0} {1} {2}", i, vCardLijst[i].Dirty, vCardLijst[i].NetteNaam.Trim()); if (vCardLijst[i].Dirty) { vCardLijst.RemoveAt(i); } } // nu de dubbele telnr, email en adressen verwijderen // ik weet niet echt een snelle methode. Ik zet nu alle records in de lijsten op Dirty = false; // bij een dubble zet ik dirty op true // tenslotte verwijder ik alle dirty's. foreach (VCard vCard in vCardLijst) { foreach (AddressClass adres in vCard.adresLijst) { adres.Dirty = false; } foreach (TelephoneNumberClass telefoon in vCard.telefoonNummerLijst) { telefoon.Dirty = false; } foreach (EmailAddressClass email in vCard.emailLijst) { email.Dirty = false; } for (int i = 0; i <= vCard.adresLijst.Count - 2; i++) { for (int j = i + 1; j <= vCard.adresLijst.Count - 1; j++) { if ((vCard.adresLijst[i].Adres.Trim() == vCard.adresLijst[j].Adres.Trim()) || (vCard.adresLijst[i].Adres.Trim() == string.Empty)) { vCard.adresLijst[i].Dirty = true; } } } for (int i = 0; i <= vCard.emailLijst.Count - 2; i++) { for (int j = i + 1; j <= vCard.emailLijst.Count - 1; j++) { if ((vCard.emailLijst[i].EmailAddress.Trim() == vCard.emailLijst[j].EmailAddress.Trim()) || (vCard.emailLijst[i].EmailAddress.Trim() == string.Empty)) { vCard.emailLijst[i].Dirty = true; } } } for (int i = 0; i <= vCard.telefoonNummerLijst.Count - 2; i++) { for (int j = i + 1; j <= vCard.telefoonNummerLijst.Count - 1; j++) { int l1 = vCard.telefoonNummerLijst[i].TelephoneNumber.Trim().Length - 7; int l2 = vCard.telefoonNummerLijst[j].TelephoneNumber.Trim().Length - 7; if (l1 <= 2) { l1 = 0; vCard.telefoonNummerLijst[i].TelephoneNumber = string.Empty; } if (l2 <= 2) { l2 = 0; vCard.telefoonNummerLijst[j].TelephoneNumber = string.Empty; } if ((vCard.telefoonNummerLijst[i].TelephoneNumber.Trim().Substring(l1) == vCard.telefoonNummerLijst[j].TelephoneNumber.Trim().Substring(l2)) || (vCard.telefoonNummerLijst[i].TelephoneNumber.Trim() == string.Empty)) { vCard.telefoonNummerLijst[i].Dirty = true; } } } for (int i = vCard.adresLijst.Count - 1; i >= 0; i--) { if (vCard.adresLijst[i].Dirty) { vCard.adresLijst.RemoveAt(i); } } for (int i = vCard.emailLijst.Count - 1; i >= 0; i--) { if (vCard.emailLijst[i].Dirty) { vCard.emailLijst.RemoveAt(i); } } for (int i = vCard.telefoonNummerLijst.Count - 1; i >= 0; i--) { if (vCard.telefoonNummerLijst[i].Dirty) { vCard.telefoonNummerLijst.RemoveAt(i); } } } vCardLijst.Sort(new vCardComparer()); }