2009-11-16 13 views
6

क्या तरीका रेंज 'ए' ... "Z" की तरहसी # Enumerable रेंज

Enumerable.Range(1,100) 

Enumerable.Range("A","Z"); 
+0

मुझे लगता है कि आपको 'ए', 'जेड' का उपयोग करना चाहिए। स्ट्रिंग्स के बजाय अक्षर – RvdK

उत्तर

10
Enumerable.Range('A', 26).Select(x => ((char)x).ToString()) 
+0

ब्याज से 'ToString' को कॉल क्यों करें? मैं उम्मीद नहीं करता कि कुछ भी उपयोगी ... –

+0

क्योंकि अन्यथा जब आप गणना करना शुरू करते हैं तो आपको स्ट्रिंग्स ("ए", "बी", ... के बजाय पूर्णांक/वर्ण (65, 66, ...) मिलेंगे।) जो अधिक व्यावहारिक होगा। –

+0

गणना के दौरान 'ToString()' को कॉल करने की एक और संभावना है, लेकिन मैंने सोचा कि वापसी 'IEnumerable ' आसान होगा। –

11

संपादित प्राप्त करने के लिए है: डैरिन के संशोधन को शामिल अपडेट किया गया ...

.NET 3.5 SP1 में, इस काम किया है जाएगा:

Enumerable.Range('A', 26).Cast<char>() 

हालांकि, Castchanged for .NET 3.5 SP1 के व्यवहार, तो यह अब केवल संदर्भ के रूपांतरण unboxing रूपांतरण पर प्रदर्शन करती है। तो .NET 3.5SP1 और ऊपर के लिए, आपको इसकी आवश्यकता है:

Enumerable.Range('A', 26).Select(x => (char) x); 

यह बहुत अच्छा नहीं है, स्वीकार्य रूप से।

MiscUtil साथ

आप इस्तेमाल कर सकते हैं

'A'.To('Z').StepChar(1) 
कि जैसे आप चाहे

या नहीं व्यक्तिगत स्वाद :)

+0

@ जोन, 'एन्यूमेरेबल। रेंज (' ए ', 26) .स्ट ()। टोएरे() 'एक अवैध कैस्ट अपवाद फेंक देगा। –

+0

धन्यवाद जॉन। बस मैं आपकी पुस्तक के अध्याय 11 (क्वेरी अभिव्यक्ति और वस्तुओं से लिंक) का अध्ययन कर रहा हूं। – user196546

+0

मुझे एक और संदेह है कि टाइप ऑफ टाइप <> और कास्ट <> के बीच क्या अंतर है? – user196546

12

क्यों बस इसे सरल रखने नहीं करने की बात है ...

public static IEnumerable<char> GetAlphabet() 
{ 
    return "ABCDEFGHIJKLMNOPQRSTUVWXYZ".AsEnumerable(); 
} 
+0

धन्यवाद जेम्स, बहुत अच्छा लगता है। – user196546

+0

अन्य उदाहरणों की तुलना में छोटे कोड देता है। चुम्मा :) – Carra

1

एक और तरीका, यदि आप वर्णमाला के एक तत्व से दूसरे तत्व में टुकड़ा करना चाहते हैं ...

Enumerable.Range(0,26).Select(x => (char)((char)x + 'A')) 
संबंधित मुद्दे