2009-11-16 11 views
6

Was ist der Weg Range "A" ... "Z" wieC# Enumerable Bereich

Enumerable.Range(1,100) 

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

Ich denke, Sie sollten 'A', 'Z' verwenden. Zeichen anstelle von Zeichenfolgen – RvdK

Antwort

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

Warum ist der Aufruf von 'ToString' nicht von Interesse? Ich würde nicht erwarten, dass etwas Nützliches zu tun ... –

+0

Weil sonst, wenn Sie mit dem Aufzählen beginnen erhalten Sie Ganzzahlen/Zeichen (65, 66, ...) statt Strings ("A", "B", ...)) was praktischer wäre. –

+0

Eine andere Möglichkeit ist, 'ToString()' während der Enumeration aufzurufen, aber ich dachte, die Rückkehr 'IEnumerable ' wäre einfacher. –

11

EDIT zu erhalten: aktualisiert, um Darins Korrektur ...

In .NET 3.5 SP1, dies würde gearbeitet haben:

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

jedoch das Verhalten von Castchanged for .NET 3.5 SP1, so dass es jetzt führt nur Referenz Conversions auf Unboxing Konvertierungen. Also für .NET 3.5SP1 und darüber, was Sie brauchen:

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

Es ist nicht sehr schön, zugegebenermaßen.

Mit MiscUtil Sie

'A'.To('Z').StepChar(1) 

Ob Sie so verwenden könnte oder nicht, ist eine Frage des persönlichen Geschmacks :)

+0

@Jon, 'Enumerable.Range ('A', 26) .Cast (). ToArray()' wird eine InvalidCastException werfen. –

+0

Danke Jon.Just Ich studiere Kapitel 11 (Query Expression und Linq to Objects) Ihres Buches. – user196546

+0

Ich habe noch einen Zweifel, was ist der Unterschied zwischen OfType <> und Cast <>? – user196546

12

Warum es einfach nicht halten einfach ...

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

Danke James, scheint sehr nett. – user196546

+0

Gibt kleineren Code als die anderen Beispiele. KUSS :) – Carra

1

Eine andere Methode, wenn Sie von einem Element des Alphabets in ein anderes schneiden möchten ...

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