Qual è il modo per ottenere Range "A" ... "Z", comeC# Enumerable Gamma
Enumerable.Range(1,100)
Enumerable.Range("A","Z");
Qual è il modo per ottenere Range "A" ... "Z", comeC# Enumerable Gamma
Enumerable.Range(1,100)
Enumerable.Range("A","Z");
Enumerable.Range('A', 26).Select(x => ((char)x).ToString())
Perché la chiamata a 'ToString' è fuori interesse? Non mi aspetto che faccia qualcosa di utile ... –
Perché altrimenti quando inizi a enumerare otterrai numeri interi/caratteri (65, 66, ...) invece di stringhe ("A", "B", ...) che sarebbe più pratico. –
Un'altra possibilità è chiamare 'ToString()' durante l'enumerazione, ma ho pensato che restituire 'IEnumerable
EDIT: aggiornato per includere la correzione di Darin ...
In .NET 3.5 SP1, questo avrebbe lavorato:
Enumerable.Range('A', 26).Cast<char>()
Tuttavia, il comportamento di Cast
changed for .NET 3.5 SP1, quindi ora esegue solo le conversioni riferimento alle conversioni unboxing. Quindi per .NET 3.5SP1 e versioni successive, è necessario:
Enumerable.Range('A', 26).Select(x => (char) x);
Non è terribilmente bello, lo ammetto.
Con MiscUtil si potrebbe usare
'A'.To('Z').StepChar(1)
Sia che così o non è una questione di gusto personale :)
@Jon, 'Enumerable.Range ('A', 26) .Cast
Grazie Jon. Sto studiando il capitolo 11 (Query Expression e Linq to Objects) del tuo libro. – user196546
Ho ancora un dubbio qual è la differenza tra Of ofType <> e Cast <>? – user196546
Perché non solo mantenere le cose semplici ...
public static IEnumerable<char> GetAlphabet()
{
return "ABCDEFGHIJKLMNOPQRSTUVWXYZ".AsEnumerable();
}
Grazie James, sembra molto carino. – user196546
Fornisce un codice più piccolo rispetto agli altri esempi. BACIO :) – Carra
Un altro metodo, se vuoi tagliare da un elemento dell'alfabeto a un altro ...
Enumerable.Range(0,26).Select(x => (char)((char)x + 'A'))
Penso che dovresti usare "A", "Z". caratteri al posto delle stringhe – RvdK