Duplikate aus einem Array entfernen

Es ist ja nicht ungewöhnlich, Warn- und Fehlermeldungen, die man von einem Service erhält, zu loggen und ggf. weiterzuverarbeiten. Jetzt hatte ich einen Fall, bei dem ich gelegentlich dieselben Warnmeldungen doppelt oder dreifach in einer Rückmeldung hatte, manchmal gemischt mit einer anderen Fehlermeldung.

Das geht so nicht. Schließlich will ich nicht unser Log zuspammen.

Ziel:

  • doppelte Einträge entfernen
  • nach Typ sortieren (Fehler vor Warnungen)
  • Meldungen zu Anzeigezwecken in einem Text-String zusammenfassen

Schwierig? Nicht mit LINQ.

Mit LINQ lässt sich das alles mit ein bis zwei Zeilen erledigen.

Vom Service erhalte ich ein Response-Objekt ergebnis, dass u.a. ein Array mit Meldungsobjekten enthält. Die für mich interessanten Eigenschaften des Meldungsobjektes sind messageText und messageType.

In den Klammern befindet sich die eigentliche LINQ-Abfrage. Mit dem orderby werden die Meldungen nach Priorität sortiert.

Distinct() entfernt die Duplikate aus dem Ergebnis.
Aggregate() wendet eine Funktion auf eine Sequenz von Daten an. In unserem Beispiel, wird der aktuelle Dateneintrag mit einem Zeilenumbruch und dem nächsten Dateneintrag konkateniert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.