2010-09-14 6 views
2
var files = from file in my.Computer.FileSystem.GetFiles(CurDir()) orderby file select file; 

Répondre

9
var files = from file in Directory.GetFiles(Environment.CurrentDirectory) 
      orderby file 
      select file; 

Edit: en utilisant ce code de la réponse de Gabe si vous utilisez .Net 4.0; c'est mieux pour les raisons qu'il mentionne. Utilisez ceci si vous utilisez 3.5.

+0

Hmm, je pense que na pas compris la question (une erreur facile, compte tenu de l'imprécision de celui-ci). – RPM1984

5

C'est une alternative dans les nouvelles versions de .Net:

var files = from file in Directory.EnumerateFiles(Environment.CurrentDirectory) 
      orderby file 
      select file; 

D'une manière générale, il est préférable d'utiliser EnumerateFiles au lieu de GetFiles parce qu'il ne crée pas tout un éventail de chaînes avant de revenir. Cela permet non seulement d'enregistrer la création du tableau, mais aussi de commencer le traitement dès que le premier nom de fichier est lu plutôt que d'avoir à attendre que le dernier soit lu. Vous pouvez penser à GetFiles() en tant que EnumerateFiles().ToArray().

+4

C'est similaire, mais pas la même chose. –

+0

Bien sûr, puisque vous faites un orderby, il faudra quand même construire une liste. –

+0

James Curran: Bon point, mais 'GetFiles()' fait un tableau, alors 'OrderBy' * copie * le tableau et le trie, retournant le nouveau tableau. Si vous vouliez dire que dans les deux cas vous devez attendre que l'énumération soit terminée avant d'obtenir le premier élément, vous avez raison. Si vous avez dit que 'GetFiles' n'est pas moins efficace dans ce cas, vous avez tort. 'var fichiers = Directory.GetFiles(); files.Sort(); 'serait aussi efficace. – Gabe

3

Je vais le faire avec le autre syntaxe :)

var files = System.IO.Directory.EnumerateFiles(Environment.CurrentDirectory) 
           .OrderBy(f => f); 
Questions connexes