2013-06-04 15 views
12

Tôi có một C Danh sách # với hàng ngàn chuỗi:C# Thay thế tất cả các yếu tố của Danh sách <string> với cùng một khuôn mẫu với LINQ

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

Tôi muốn thay thế tất cả chúng với dấu ngoặc xung quanh họ, như vậy thì họ sẽ trông giống như

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

Tôi biết cách viết vòng lặp và thực hiện việc này nhưng tôi muốn biết liệu có cách nào để thực hiện điều đó bằng LINQ và LAMBDA hay không. Tôi cũng đang mở các đề xuất khác.

Rất cám ơn!

Trả lời

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

Nếu có hàng nghìn chuỗi và tất cả những gì bạn muốn làm là đặt dấu ngoặc ôm quanh chúng, tôi sẽ không sử dụng 'string.Format', chỉ cần sử dụng' '(' + x + ')' ' . 'string.Format' có thể là một con thú khi nó xử lý rất nhiều định dạng khác nhau (và thậm chí có thể được mở rộng). – Alxandr

+0

@Alxandr Bạn đã đánh giá nó chưa? Tôi vừa làm: với chuỗi '10000000'' string.Format' lấy '5785' ms trong khi' '(' + x + ')' 'mất' 4531' ms. Tôi không thấy bất kỳ lợi ích, xem xét rằng giải pháp của bạn sẽ tạo ra hai chuỗi cho mỗi chuỗi đầu vào, trong khi string.Format sẽ chỉ tạo một chuỗi cho mỗi chuỗi đầu vào. LƯU Ý: '" ("+ vals [i] +") "' thực hiện trong '2088' ms. Điều này có thể là do vấn đề quyền anh. Nhân tố ** 3 ** giống như một sự cải thiện đối với tôi –

+0

Không phải là cá nhân. Tôi vừa đọc tài liệu cho loggin mà mạnh mẽ khuyến khích chống lại bằng cách sử dụng nó vì lý do hiệu suất. Ngoài ra, nếu trình biên dịch là một số tiền hợp lý của thông minh (mà tôi đoán nó là), sẽ chỉ có một chuỗi tạo ra cả hai lần (tôi rất nghi ngờ '(000' được tạo ra đầu tiên hơn' (000) '(hoặc theo cách khác xung quanh), mặc dù tôi có thể bị nhầm lẫn – Alxandr