2016-10-27 2 views
0

Ich habe eine Frage bezüglich der Methode distinct() in C#. Ich habe eine String-Liste.distinct() -Methode für eindeutige Strings in einer Liste C#

List <string> stringtxt = stringtxt.distinct().ToList(); 

Zum Beispiel in Strings in meiner stringtxt Liste sind:

"A" 
"B" 
"C" 
"B" 
"E" 

Wie kann ich dies realisieren, dass ich nur den Ausgang "A" "B" "C" "E" erhalten. Ohne Verwendung der Schnittstelle "IEquatable" oder eines beliebigen HashCodes. Ich habe eine foreach-Schleife verwendet, um dies zu lösen.

foreach(var stringitem in stringtxt) 
{ 
    tb.text = stringitem; 
} 

Aber ich bin mir nicht sicher, ob das der beste Weg ist, das zu lösen.


Aus dem Kommentar unten:

Es tut mir leid ich versuche, die Frage verständlich zu fragen: D Auch in diesem i mein Code:

List<string> stringvalues = new List<string>(); 
stringvalues.Add("A"); 
stringvalues.Add("ccc"); 
stingvalues.Add("B"); 
stingvalues.Add("B"); 
stingvalues.Add("E"); 
stringvalues.Add("hello"); 
List<string> stringtxt = stringvalues.Distinct().ToList(); 

//Output 
A,ccc,B,E,hello 
+2

Bitte geben Sie eine [MCVE] - nach der Typo Festsetzung Code sowieso keine Duplikate nicht produzieren sollte, als 'Distinct()' nur unterschiedliche Werte zurückgibt. Es ist nicht klar, wie das Textfeld relevant ist, oder wie Sie 'stringtxt' deklarieren und' stringtxt' in seinem Initialisierer verwenden ... –

+1

Nicht klar. 'List stringtxt = stringtxt.Distinct(). ToList();' ist zirkulär und wird nicht kompiliert. Also wie ist deine Eingabe, und was hat nicht funktioniert? –

+0

Sie können eine Variable nicht deklarieren und sie in derselben Anweisung als Quelle verwenden: 'List stringtxt = stringtxt ....' –

Antwort

0

Ich sehe, Sie brauchen nur zu setzen die distinkte Liste zurück zu string? Dann brauchen Sie nur die letzte Zeile unter:

List<string> stringtxt = new List<string>() 
{ 
    "A", 
    "B", 
    "C", 
    "B", 
    "E" 
}; 
stringtxt = stringtxt .Distinct().ToList(); // avoid redeclaring stringtxt as List<string> 
// combine the stringlist into a string with , separator 
string output = string.Join(",", distinctStringList); 
+0

Viele Annahmen ... –

+0

danke @ Kurakura88, aber ich kann nicht die Split-Funktion verwenden, weil ich eine Zeichenfolge habe Liste – flowers1234

0

erstellen hashtable, gehen durch alle Saiten mit einem foreach und versuchen, es hinzuzufügen. Wenn dies fehlschlägt, ignorieren Sie den Fehler. Am Ende drucken Sie einfach alle Elemente in Ihrer Hashtabelle.

Zum Beispiel:

Hashtable hash= new Hashtable(); 
    foreach (var s in your_list) 
    { 

     try 
     { 
      hash.Add(s, s); 
     } 
     catch 
     { 
      // will happen if exists 
     } 
    } 
+0

vielen Dank, ich habe getan dies auch mit einer Hashtabelle, und ich habe das gleiche Ergebnis. Also für die Einzigartigkeit kann ich die Methode distinct() verwenden oder ich kann ein Hashtable-Recht implementieren :)? – flowers1234

+0

ja. Ich werde distinct verwenden, was die Arbeit für dich erledigt, aber wenn du es selbst machen willst, würde eine Hashtable oder ein Wörterbuch gut funktionieren. Sie könnten es mit einer Liste tun, aber die Laufzeit wird leiden (nicht auf Ihrer Spielzeugliste von 100 Artikeln, aber die Zeit wird exponentiell sein. – Noctis

Verwandte Themen