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
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 |
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);
}
}
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 |
jetzt bin ich fast fertig.
wie kann ich jetzt nach der bereinigung eine neu Array/Liste aus den Strings erzeugen?
Danke im Voraus!
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 |
Der Vollständigkeit halber noch mal fürs Array:
var distinctCollection = myCollection.Distinct().ToArray();
😉
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck