J'ai vu hier un extrait de code dans l'une des réponses ici sur StackOverflow qui m'a intrigué. C'était quelque chose comme ça:
List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"};
myList.ForEach(d=>d.ToLower());
J'espérais pouvoir l'utiliser pour convertir tous les éléments de ma liste en minuscules. Cependant, cela ne se produit pas ... après avoir exécuté cela, la casse dans myList reste inchangée.
Ma question est donc de savoir s'il existe un moyen d'utiliser les expressions LINQ et Lambda pour parcourir et modifier facilement le contenu d'une liste d'une manière similaire à celle-ci.
Merci, Max
C'est parce que ToLower renvoie une chaîne en minuscules plutôt que de convertir la chaîne d'origine. Donc, vous voudriez quelque chose comme ça:
la source
la source
ForEach
utiliseAction<T>
, ce qui signifie que vous pourriez affecterx
s'il n'était pas immuable. Puisquex
est astring
, il est immuable, donc rien de ce que vous lui faites dans le lambda ne changera ses propriétés. La solution de Kyralessa est votre meilleure option, sauf si vous souhaitez implémenter votre propre méthode d'extension qui vous permet de renvoyer une valeur de remplacement.la source
la source