2011-02-16 12 views
62

मेरे पास एक स्ट्रिंग है:स्ट्रिंग को एक पंक्ति में <string> सूची में कनवर्ट करें?

var names = "Brian,Joe,Chris"; 

क्या इसे एक List<string> में , द्वारा एक पंक्ति में रूपांतरित करने का कोई तरीका है?

+14

मुझे "एक पंक्ति में" आवश्यकता नहीं है। कोड लिखने के लिए शूट करें जो स्पष्ट और समझ में आता है, जितना संभव हो उतना छोटा अंतरिक्ष में ऑपरेशन को फिट करने के तरीके नहीं। –

+5

LINQ के आगमन के साथ, "एक लाइनर" जो पठनीय और साफ हैं, सी # आईएमओ में अधिक आम हो गए हैं। –

+4

@ एडी एस - जबकि मैं मानता हूं कि "एक पंक्ति में" इसे रखने का सबसे अच्छा तरीका नहीं हो सकता है, एक मैट ग्रीर जैसे सिंगल लाइन स्टेटमेंट्स बहुत स्पष्ट और समझदार होते हैं। मेरा अनुमान है कि वह सिर्फ 'फॉर' लूप का उपयोग करना टालना चाहता है, जो अधिक कठिन, त्रुटि प्रवण और अस्पष्ट है। – StriplingWarrior

उत्तर

128
List<string> result = names.Split(new char[] { ',' }).ToList(); 

या यहां तक ​​कि दान के सुझाव से क्लीनर: क्योंकि यह एक आइटम सूची से बचाता है

List<string> listOfNames = new List<string>(names.Split(','));

+11

आपने इसे उद्देश्य पर रखा होगा, लेकिन मैं हमेशा पूरे 'नए चार [] {} 'भाग को छोड़ देता हूं। यह कम से कम * मुझे * इस तरह से अधिक पठनीय है। –

+3

@ डैन: मैं सहमत हूं, और आम तौर पर मैं पैराम्स ओवरलोड का उपयोग करता हूं। लेकिन एक सवाल के जवाब के लिए कभी-कभी मुझे लगता है कि वर्बोजिटी बेहतर है। वास्तव में राय की बात है। –

+2

ToList() अब और लाभ नहीं लग रहा है? – ginalster

30

List<T> एक निर्माता है कि स्वीकार एक IEnumerable<T> है यदि आपकी स्रोत स्ट्रिंग खाली है तो खाली आइटम के साथ:

IEnumerable<string> namesList = 
     !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>(); 
+0

उत्कृष्ट - सिस्टम आयात करने की कोई आवश्यकता नहीं है। लिंकक – VictorySaber

1

मैं इस पसंद करते हैं:

List<string> result = names.Split(',').ToList(); 
0

यदि आपके पास पहले से ही एक सूची है और एक सीमित स्ट्रिंग से मूल्य जोड़ना चाहते हैं, तो आप AddRange या InsertRange का उपयोग कर सकते हैं। उदाहरण के लिए:

existingList.AddRange(names.Split(',')); 
संबंधित मुद्दे