J'essai de faire une chose qui me semble simple :
Au lieu de faire 1 if et de faire 2 fois le même linq en ajoutant juste un take, du fait que l'ensemble des fichiers soit énuméré, j'essaie de le faire ensuite.
Avant simplification
Puis 2ème traitement pour création des objets ...
Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 If MaxMedia<>0 then Dim f = From fichier In Directory.EnumerateFiles("*", SearchOption.AllDirectories) Where exts.Contains(fichier.Extension.ToLower) Order By fichier.FullName Ascending.take(MaxMedia) Else Dim f = From fichier In Directory.EnumerateFiles("*", SearchOption.AllDirectories) Where exts.Contains(fichier.Extension.ToLower) Order By fichier.FullName Ascending End if
J'essai ça :
Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim f = From fichier In Directory.EnumerateFiles("*", SearchOption.AllDirectories) Where exts.Contains(fichier.Extension.ToLower) Order By fichier.FullName Ascending If MaxMedia <> 0 Then f = f.Take(MaxMedia) End If
Mais j'obtiens un invalidCastException du fait que mon f est à l'origine un IOrderedEnumerable
existe-il un moyen "simple" ou dois-je avoir une nouvelle variable qui reprend le résultat du Take et une autre qui copie f ?
Partager