2013-06-04 16 views
12

Mam C# lista z tysiącami strun:C# Wymienić wszystkie elementy listy <string> z tym samym deseniu z LINQ

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

chciałbym wymienić wszystkie z nawiasami wokół nich, więc wtedy oni wyglądać

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

wiem jak napisać pętli for i to zrobić, ale chciałbym wiedzieć, czy istnieje sposób, aby to zrobić z LINQ i wyrażenia lambda najlepiej. Jestem także otwarty na inne sugestie.

Wielkie dzięki!

Odpowiedz

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

Jeśli rzeczywiście istnieje tysiące strun, a wszystko, co chcesz zrobić, to miejsce parenthesises wokół nich, nie użyłby 'string.Format', wystarczy użyć' „(” + x + „)” ' . 'string.Format' może być bestią, ponieważ obsługuje ona wiele różnych formatów (a nawet może być rozszerzona). – Alxandr

+0

@Alxandr Czy porównałeś go? Właśnie zrobiłem: dla '10000000' napisów' string.Format' wziął '5785' ms, podczas gdy' '(' + x + ')' 'wziął' 4531' ms. Nie widzę żadnych korzyści, biorąc pod uwagę, że twoje rozwiązanie stworzy dwa ciągi dla każdego ciągu wejściowego, podczas gdy string.Format stworzy tylko jeden na ciąg wejściowy. UWAGA: '" ("+ vals [i] +") "' wykonuje się w '2088' ms. Prawdopodobnie wynika to z problemu boksowania znaków. Współczynnik ** 3 ** bardziej przypomina poprawę dla mnie. –

+0

Nie osobiście nie. Właśnie przeczytałem dokumentację do logowania, która zdecydowanie zaleca, aby nie używać jej ze względów wydajnościowych. Ponadto, jeśli kompilator jest dość sprytny (jak sądzę), będzie tylko jeden ciąg utworzony za każdym razem (mam duże wątpliwości, że '(000' jest tworzony jako pierwszy niż' (000) '(lub w inny sposób), choć może się mylę: – Alxandr

Powiązane problemy