Eu vi um trecho de código ontem em uma das respostas aqui no StackOverflow que me intrigou. Era algo assim:
List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"};
myList.ForEach(d=>d.ToLower());
Eu esperava poder usá-lo para converter todos os itens de myList em minúsculas. No entanto, isso não acontece ... depois de executar isso, o invólucro em myList não é alterado.
Portanto, minha pergunta é se EXISTE uma maneira, usando expressões LINQ e Lambda, de iterar e modificar facilmente o conteúdo de uma lista de maneira semelhante a esta.
Obrigado, max
Isso ocorre porque ToLower retorna uma string em minúsculas em vez de converter a string original. Então, você quer algo assim:
fonte
fonte
ForEach
usaAction<T>
, o que significa que você poderia afetarx
se não fosse imutável. Comox
é astring
, é imutável, portanto, nada que você faça com ele no lambda mudará suas propriedades. A solução da Kyralessa é sua melhor opção, a menos que você queira implementar seu próprio método de extensão que permite retornar um valor de substituição.fonte
fonte