2012-07-05 17 views
5

जब webservices, सी # में बनाने, मैं ने पाया है कि यह बहुत ही उपयोगी वापस दांतेदार सरणियों पारित करने के लिए, यानी स्ट्रिंग [] []स्ट्रिंग में सूची <सूची <string[]>> परिवर्तित [] [] [] सी # में

मैं भी इन्हें मेरे कोड में एक साधारण तरीके से बनाने के लिए एक साफ चाल मिली, जो एक सूची बनाना था और इसे ToArray() कॉल करके परिवर्तित करना था।

उदा।

public string[][] myws() { 
    List<string[]> output = new List<string[]>(); 
    return output.ToArray(); 
} 

मैं एक ऐसी ही समाधान को रोजगार करने में सक्षम होना चाहते हैं, लेकिन मैं एक 3 स्तर दांतेदार सरणी या स्ट्रिंग [] [] [] के साथ इसी तरह कुछ करने के लिए कैसे सोच भी नहीं सकते छोरों का सहारा के बिना और इस तरह के।

सादर मार्टिन

उत्तर

6

आप एक Select() जो एक सरणी के लिए प्रत्येक भीतरी List<string> धर्मान्तरित कर ToArray() का उपयोग कर, और फिर ToArray() का उपयोग कर उन परिणामों को परिवर्तित करके वहाँ प्राप्त कर सकते हैं: के रूप में के लिए

 var x = new List<List<string[]>>(); 

     string[][][] y = x.Select(a => a.ToArray()).ToArray(); 

और इसी तरह आप जितना चाहते हैं उतने स्तर गहरे हैं।

+5

यह स्पष्ट करने के लिए कि यह "लूप और ऐसे" से परहेज नहीं कर रहा है, यह केवल LINQ के अंदर उन लूपों के कार्यान्वयन को दफन कर रहा है। हालांकि यह सही जवाब है। –

+0

@RobertLevy: सच है, यह केवल क्लीनर उपस्थिति होने के अर्थ में * लूप * से बचाता है, आंतरिक रूप से, हाँ, यह अभी भी लूप है - दुर्भाग्यवश किसी सूची से किसी सूची में किसी भी आकृति में किसी भी रूपांतरण को स्पष्ट रूप से या स्पष्ट रूप से लूप करता है ... –

+0

@RobertLevy: दरअसल, 'सूची .ToArray() '' ' के लिए अंतर्निहित संग्रहण के बाद से केवल 'Array.Copy() 'है, पहले से ही' ऐरे 'है। –

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