Ich habe gestern in einer der Antworten hier auf StackOverflow einen Code-Ausschnitt gesehen, der mich fasziniert hat. Es war ungefähr so:
List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"};
myList.ForEach(d=>d.ToLower());
Ich hatte gehofft, damit alle Elemente in myList in Kleinbuchstaben konvertieren zu können. Es passiert jedoch nicht ... nachdem dies ausgeführt wurde, bleibt das Gehäuse in myList unverändert.
Meine Frage ist also, ob es eine Möglichkeit gibt, LINQ- und Lambda-Ausdrücke zu verwenden, um den Inhalt einer Liste auf ähnliche Weise einfach zu durchlaufen und zu ändern.
Danke, Max
Dies liegt daran, dass ToLower eine Zeichenfolge in Kleinbuchstaben zurückgibt, anstatt die ursprüngliche Zeichenfolge zu konvertieren. Sie möchten also so etwas:
quelle
quelle
ForEach
verwendetAction<T>
, was bedeutet, dass Sie beeinflussen könnten,x
wenn es nicht unveränderlich wäre. Dax
es sich um a handeltstring
, ist es unveränderlich, sodass nichts, was Sie im Lambda damit tun, seine Eigenschaften ändert. Die Lösung von Kyralessa ist die beste Option, es sei denn, Sie möchten eine eigene Erweiterungsmethode implementieren, mit der Sie einen Ersatzwert zurückgeben können.quelle
quelle