2011-02-22 8 views
12

में कनवर्ट करने का सबसे अच्छा तरीका मेरे पास डेटा पंक्ति है। मैं संपत्ति dataRow.ItemArray का उपयोग कर आइटम प्राप्त कर सकता हूं जो object[] प्रकार का है। मैं करने के लिए String[] या List<String>ऑब्जेक्ट [] से स्ट्रिंग [] या सूची <String>

मैं तरीकों ToArray<> और ToList<> देखते हैं कि यह बदलना होगा। लेकिन यह नहीं पता कि इसका उपयोग कैसे करें। सावधानी से मदद करें।

धन्यवाद अग्रिम

उत्तर

20

आप वास्तव में कर रहे हैं वस्तु में [] तुम सिर्फ बुद्धिमान तत्व डाल सकता स्ट्रिंग वस्तुओं dataRow.ItemArray

में वास्तविक वस्तुओं के आधार पर दो विकल्प हैं।

dataRow.ItemArray.OfType<string>().ToList(); 

लेकिन वस्तुओं, एक और प्रकार के होते हैं, तो पूर्णांक या कुछ और की तरह आप .ToString() साथ इस उदाहरण में (स्ट्रिंग में बदलने के लिए, लेकिन एक और कस्टम विधि अपने मामले में आवश्यकता हो सकती है जरूरत

dataRow.ItemArray.Select(o => o.ToString()).ToList(); 

संपादित करें:।
आप List<string> या string[] स्पष्ट रूप से आपके .ToList() छोड़ देते हैं और बजाय एक IEnumerable<string> प्राप्त कर सकते हैं की जरूरत नहीं है

+2

+1 * दोनों * जबरन और रूपांतरण के बारे में बात करने के लिए। रूपांतरण उदाहरण में 'शून्य'/'डीबीएनयूएल' का उल्लेख/प्रबंधन करने पर विचार करें क्योंकि ये कुछ आम मामले हैं (मेरे अनुभव में)। –

3

में toArray और ToList काफी आप क्या चाहते हैं काम नहीं चलेगा, के रूप में वे केवल एक वस्तु सरणी या सूची वापस आ जाएगी। आपको पहले तारों में डेटा मालिश करने की आवश्यकता है, और Select मदद कर सकता है। इस प्रयास करें:

dataRow.ItemArray.Select(i => i == null ? string.Empty : i.ToString()).ToArray(); 
+0

मैं पसंद '" "+ मैं' घ इस मामले में के रूप में यह त्रिगुट w.r.t. जैसा ही होता है nulls - लेकिन शैली-व्यक्तिपरक :) –

4
List<string> strList = objArray.Cast<String>(); 

आप पहली बार nulls के लिए जाँच करना चाहते हो सकता है:

List<string> strList = objArray.Select(o => o == null ? String.Empty : o.ToString()).ToList(); 
+1

यह इंगित करना चाहिए कि इससे रूपांतरण नहीं होता है जो वांछित (या हो सकता है) हो सकता है। –

+0

दूसरा उदाहरण * नहीं * केवल पहले-साथ-एक-नल-चेक लेकिन एक स्पष्ट * रूपांतरण * है। यह ध्यान दिया जाना चाहिए। –

4

आप प्रतिनिधि के रूप में System.Convert.ToString साथ System.Array.ConvertTo उपयोग कर सकते हैं।

9
object[] a = new object[10]; 
string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString()) 

(लाइन आप चाहते हैं पीछे नहीं है)

संबंधित मुद्दे