C # foreach erhält nur eindeutige Werte

7

Ich habe den folgenden Code:

%Vor%

Wie würde ich der Treiber-String-Zeichenfolge nur eindeutige Treiber-IDs hinzufügen?

Danke

    
user380432 18.04.2011, 14:16
quelle

8 Antworten

4

Ihr Code fügt gerade nichts hinzu, sondern setzt nur einen String (im Rahmen der Schleife deklariert) auf jeden Wert. Das Endergebnis wäre nur der letzte Wert, und der Code wäre ohnehin nicht im Bereich des folgenden Codes. Wenn Sie versuchen, sie alle an eine durch Komma getrennte Zeichenfolge anzuhängen, versuchen Sie dies beispielsweise:

%Vor%     
Jamie Treworgy 18.04.2011, 14:22
quelle
11

Sie sollten tun:

%Vor%     
Andrei 18.04.2011 14:20
quelle
6

mhh ... vielleicht%%%%%%% s% %%%% Funktion?

verwenden     
DarkSquirrel42 18.04.2011 14:18
quelle
1

Erstellen Sie zuerst eine Vergleichsklasse und implementieren Sie die Schnittstelle IEqualityComparer<Log> :

%Vor%

Und dann benutze die Überladung der Methode Enumerable.Distinct() , die eine Instanz des Gleichheitsvergleichs verwendet:

%Vor%     
Justin Niessner 18.04.2011 14:18
quelle
1

Anstatt foreach'logsDutyStatusChange zu verwenden, könnten Sie LINQ verwenden, um eine Sammlung von distinct zu erhalten und diese zu durchlaufen, stattdessen:

%Vor%

Die Implementierung hängt genau davon ab, was Sie mit den Ergebnissen machen wollen.

    
Taylor Gerring 18.04.2011 14:23
quelle
1

Dies sollte funktionieren (ohne linq):

%Vor%     
Victor Hurdugaci 18.04.2011 14:25
quelle
0

Sie können Distinct verwenden, wenn Ihre Logs-Klasse IEquatable

implementiert

Andernfalls kann eine schnelle 'hacky' Lösung sein, etwas wie

zu verwenden %Vor%

C # 4.0 Tupel haben auch 'automagisches' Vergleichen / Gleichsetzen

    
sehe 18.04.2011 14:21
quelle
0

Hier ist ein Ansatz:

%Vor%

Distinct() funktioniert hier nicht ganz, da Sie nur die eindeutige did s erhalten.

    
recursive 18.04.2011 14:23
quelle

Tags und Links