2009-02-05 6 views
3

J'espère que quelqu'un pourra m'aider. J'utilise C# et je suis un peu nouveau. Je suis en train de charger un fichier texte dans mon application et de diviser les données sur "," Je lis une partie de la chaîne dans un <list> lorsque les données sont lues il y a beaucoup de doublons qui varient selon le fichier txt que je charge. Quelqu'un peut-il me dire comment vérifier et supprimer tous les doublons qui se présentent. Il n'y a aucun moyen de savoir ce que les doubles apparaîtront car il y a des possibilités infinies que cela pourrait être.Suppression des doublons d'une collection de listes

Merci pour l'aide à l'avance

Répondre

1

Here's un article avec quelques exemples et explications en C#. Fondamentalement, vous gardez juste la trace des uniques, et vérifiez chaque élément.

Alex

+0

J'essaie de le faire de cette façon, mais obtenir une erreur qui dit "Erreur \t Impossible de convertir implicitement le type System.Collections.Generic.IEnumerable 'en" System.Collections.Generic.IEnumerable ". existe-t-il une conversion explicite (manque-t-il une distribution?) \ Projects \ HKstats \ HKstats \ stats.v1.01.cs –

4

Si vous chargez les cordes dans un Set au lieu de dans un List puis doublons sont éliminés automatiquement.

+0

Set sonne bien - mais je voudrais vérifier la stratégie qu'il utilise pour distinct.Espérons que c'est hashing avec o (1) caractéristiques, s'il utilise l'énumération de liste avec o (n) - passer à l'utilisation du dictionnaire et utiliser une valeur nulle pour une valeur – stephbu

+0

Ma compréhension est que c'est hashing (et l'équivalent d'un 'dictionnaire' de clés sans valeurs associées). – ChrisW

7

Si vous ciblez .NET 3.5, utilisez la méthode d'extension Distinct:

var deduplicated = list.Distinct(); 
2

Un exemple simple/sale suit:

public List<string> RemoveDuplicates(List<string> listWithDups) 
{ 
    cleanList = new List<string>(); 
    foreach (string s in listWithDups) 
    { 
     if (!cleanList.Contains(s)) 
     cleanList.Add(s); 
    } 
    return cleanList; 
} 

En guise d'avertissement: String.Split sur les chaînes très grandes peut provoquer consommer d'énormes quantités de mémoire et provoquer des exceptions.

Questions connexes