Ich habe diese Abfrage so weit zu passen:Der Versuch, ein Distinct() in eine relativ komplexe LINQ-Abfrage
var msg = ModelState.Values
.Where(x => x.Errors.Any())
.Select(c => c.Errors.Select(d => d.ErrorMessage).Aggregate((e, f) => (e ?? "") + "<br/>" + f))
.Aggregate((x, y) => (x ?? "") + "<br/>" + y);
Das funktioniert perfekt, aber ich brauche die doppelten Fehlermeldungen auszufiltern. Ich habe versucht, sowohl GroupBy() und Distinct() an mehreren Stellen vor und nach dem Prädikat, das die ErrorMessage erhält, hinzuzufügen. Was vermisse ich?
Wenn ich das laufen, wie es ist, erhalte ich das folgende Ergebnis:
"Contact Email address invalid<br/>Contact Email address invalid"
Jeder Wert Errormessage hier ist „Kontakt E-Mail-Adresse ungültig“. Dies sind die Duplikate, die ich herausfiltern möchte.
Ist 'ErrorMessage' nur ein String oder ein Objekt? Wenn es; s nur eine Zeichenfolge dann 'c.Errors.Select (d => d.ErrorMessage) .Distinct(). Aggregate' sollte funktionieren –
Ja, ErrorMessage ist eine Zeichenfolge, aber nein, das funktioniert leider nicht. Wenn ich das ausführe, erhalte ich folgendes: "Kontakt Email Adresse ungültig
Kontakt Email Adresse ungültig". Es sollte nur "Kontakt E-Mail-Adresse ungültig" sein. Ich werde das zum ursprünglichen Beitrag hinzufügen. – SomeDevTesting123
Ich würde mir die Fehlermeldungen genau ansehen und sehen, ob es irgendwelche Leerzeichen oder andere Zeichen gibt, die die Prüfung "Distinct" ablehnen. –