2013-06-04 19 views
12

Ho un C# elenco con migliaia di stringhe:C# Sostituire tutti gli elementi della lista <string> con lo stesso modello con LINQ

"2324343" 
"6572332" 
"45122" ... 

Vorrei sostituire tutti loro con le parentesi intorno a loro, così poi avrebbero assomigliare

"(2324343)" 
"(6572332)" 
"(45122)" ... 

so come scrivere un ciclo e fare questo, ma mi piacerebbe sapere se c'è un modo per farlo con LINQ ed espressione di preferenza LAMBDA. Sono aperto anche ad altri suggerimenti.

Grazie mille!

risposta

29
var resultList = list.Select(x => string.Format("({0})", x)).ToList(); 
+1

Se c'è davvero migliaia di stringhe, e tutto quello che volete fare è inserire parenthesises intorno a loro, non vorrei usare 'string.Format', basta usare' '(' + x + ')' ' . 'stringa.Formato' può essere una bestia in quanto gestisce MOLTA formattazione (e può anche essere estesa). – Alxandr

+0

@ Alxandr L'hai messo a confronto? Ho appena fatto: per '10000000' stringhe' string.Format' ha preso '5785' ms mentre' '(' + x + ')' 'ha richiesto' 4531' ms. Non vedo alcun vantaggio, considerando che la soluzione creerà due stringhe per ogni stringa di input, mentre string.Format creerà solo una stringa per input. NOTA: '" ("+ vals [i] +") "' esegue in '2088' ms. Ciò è probabilmente dovuto a un problema di boxe di caratteri. Il fattore ** 3 ** è più un miglioramento per me –

+0

Non personalmente n. Ho appena letto la documentazione per il logging che consiglia vivamente di non utilizzarla per motivi di prestazioni. Inoltre, se il compilatore ha una buona dose di intelligenza (che credo che sia), ci sarà solo una stringa creata entrambe le volte (io dubito fortemente che '(000' sia creato prima di' (000) '(o il in un altro modo), anche se potrei sbagliarmi: – Alxandr

Problemi correlati