Sie sagen, dass Sie hinter einer LINQ-Lösung her sind ... das ist einfach:
%Vor% Wir kennen den Typ von names
nicht, aber wenn Sie ihn zurück zuweisen möchten, könnten Sie ToArray
oder ToList
verwenden:
Sie sollten sich darüber im Klaren sein, dass der von Ihnen gepostete Code momentan überhaupt nicht LINQ verwendet ...
Zeichenketten in C # sind unveränderlich (ändert sich nicht), so dass s.Replace
eine neue Zeichenkette zurückgibt. Leider bedeutet dies, dass Sie foreach
nicht für die Aktualisierung verwenden können. Wenn Namen ein Array ist, sollte dies funktionieren:
Wie andere bereits erwähnt haben, müssen Sie eine for
-Schleife verwenden, um dies direkt zu tun. Wenn die Operation nicht direkt ausgeführt werden muss (d. H. Die Ergebnisse können eine andere Sammlung sein), können Sie dies auch als linq-Abfrage durchführen, z. B.
Eine Sache jedoch - es sieht so aus, als ob Sie versuchen, die Erweiterung einiger Dateinamen zu ändern. Wenn das das ist, was Sie versuchen, dann würde ich Path.ChangeExtension
die speziell für diesen Zweck entwickelt wurde.
s.Replace ist eine Funktion, so dass Sie s = s.Replace () möchten .. obwohl es besser ist, StringBuilder zu verwenden. (siehe obere Antwort)