Laden...

Strings in einer Liste miteinander vergleichen und doppelte Löschen

Erstellt von bigmagic vor 7 Jahren Letzter Beitrag vor 7 Jahren 4.524 Views
B
bigmagic Themenstarter:in
3 Beiträge seit 2016
vor 7 Jahren
Strings in einer Liste miteinander vergleichen und doppelte Löschen

Hallo Liebe Kommunity,

ich habe einen String bestehend aus Codes. z.B. String = {"01", "02", "03", "01","02","04"...} und möchte die doppelten Einträge "01" & "02" löschen oder ignorieren.
am ende soll der neu String so aussehen String= {"01", "02", "03","04"}

Die Anzahl von variabel/Codes kann innerhalb der String varieren (4-12 Einträge) und einen Code kann mehrfach in den String auftauschen (wie im bsp oben)

wie kann ich diese Aufgabe am besten lösen?
Danke im Voraus!

mba

709 Beiträge seit 2008
vor 7 Jahren

Hallo bigmagic,
schau dir mal die Distinct-Methode an.

Gruß
Micha

2.298 Beiträge seit 2010
vor 7 Jahren

Hast du einen String oder ein Array von Strings?

Bei einem Array hilft das angesprochene Distinct.


string[] values = new string[] {"01", "02", "01", "03", "04", "01", "05", "06", "07", "03"};
var result = values.Distinct();

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

B
bigmagic Themenstarter:in
3 Beiträge seit 2016
vor 7 Jahren

Danke für die schnelle Antwort.
mit der IEnumerable und Disctinct Funktion läuft es soweit.
jetzt möchte ich noch die Anzahl der elemente in der neue Liste bestimmen.
Ahbt ihr eventuelle eine idée?
so sieht meine Ausführung aus:

class Program
	{
		public static void Main(string[] args)
		{
			// Alle codes in eine Liste einbringen
			List<string> Codes = new List<string> { "19","20", "21", "46", "46", "55", "17", "21", "55", "55" };

            // Diese Sequenz (funktion Disctinct) soll aus der Liste den doppelte Elemente entfernten. 
			IEnumerable<string> distinct_Codes = Codes.Distinct();
			
            Console.WriteLine("Distinct Codes:");
            Console.WriteLine("Count:{0}", Codes.Count); // Anzahl in der List vor der bearbeitung
            
            // Durchläuft die Auflistung und verarbeitet Alle elemente 
            foreach (string DMC in distinct_Codes)
            {            	
            	Console.WriteLine(DMC);            	
            	
            }           
            // new Anzahl in der Liste bestimmen ????
            
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
2.298 Beiträge seit 2010
vor 7 Jahren

Das ist doch auch relativ einfach? Bei der Liste hast du die Count-Property. IEnumerable<T> hat dafür die Erweiterungsmethode "Count()".


var distinctValues = values.Distinct();
Console.WriteLine("Anzahl: " + distinctValues.Count());

EDIT: Übrigens setze C#-Code bitte in die entsprechenden Tags.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

B
bigmagic Themenstarter:in
3 Beiträge seit 2016
vor 7 Jahren

jetzt bin ich fast fertig.
wie kann ich jetzt nach der bereinigung eine neu Array/Liste aus den Strings erzeugen?
Danke im Voraus!

2.298 Beiträge seit 2010
vor 7 Jahren

Ein wenig Eigeninitiative solltest du dir angewöhnen. Das findet man in der Regel ganz einfach durch Suchen im Internet. Das einfachste wäre:


var distinctCollection = myCollection.Distinct().ToList();

alternativ:


var distinctCollection = myCollection.Distinct();
var myNewCollection = new List<string>(distinctCollection);

noch weiter alternativ:


var distinctCollection = myCollection.Distinct();
var myNewCollection = new List<string>();
myNewCollection.AddRange(distinctCollection);

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

709 Beiträge seit 2008
vor 7 Jahren

Der Vollständigkeit halber noch mal fürs Array:

var distinctCollection = myCollection.Distinct().ToArray();

😉

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo bigmagic,

im Prinzip wäre dein Problem mit der ersten Antwort und ein bisschen Eigeninitiative erledigt gewesen.

BItte benutze die richtigen Code-Tags und wälz deine Arbeit nicht aufs Forum ab.

Weiter ist der Titel irreführend. Du sagst im Titel, dass du strings vergleichen willst. Im Text aber steht

doppelten Einträge "01" & "02" löschen oder ignorieren. wobei es um eine Liste geht.

Ich hab den Titel mal angepasst.

Bitte beachte dies bei deinen nächsten Beiträgen.

Danke und Gruss

Coffeebean