Hoe te Zetten alle tekenreeksen in de Lijst<string> voor de lagere geval met LINQ?
Ik zag een codefragment gisteren in een van de reacties hier op StackOverflow dat intrigeerde me. Het was iets als dit:
List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"};
myList.ForEach(d=>d.ToLower());
Ik hoopte dat ik zou kunnen gebruiken om te converteren van alle items in myList naar kleine letters. Echter, het gebeurt niet… na het uitvoeren van deze, de behuizing in myList is ongewijzigd.
Dus mijn vraag is of er een manier IS om, met behulp van LINQ en Lambda expressies te makkelijk doorlopen en wijzigen van de inhoud van een lijst in een op vergelijkbare wijze.
Bedankt,
Max
Eenvoudigste aanpak:
Niet te veel anders uit dan je voorbeeld code.
ForEach
lussen van de oorspronkelijke lijst overwegende datConvertAll
creëert een nieuwe die u wilt toewijzen.Dat is omdat ToLower geeft een kleine string in plaats van het omzetten van de originele string. Dus je zou iets als dit:
ForEach
gebruiktAction<T>
, wat betekent dat u kan van invloed zijn opx
als het niet onveranderlijk. Sindsx
is eenstring
, het is onveranderlijk, zodat je niets doen om het in de lambda zal u de eigenschappen wijzigen. Kyralessa de oplossing is uw beste optie, tenzij u wilt implementeren van uw eigen extensie methode die u in staat stelt om een vervangende waarde.