2009-09-17 7 views
2

J'ai ce point de vue dans une application ASP.NET MVC:Est-il possible d'utiliser la partie LINQ du foreach à l'intérieur de la boucle?

<% 
    var path = Path.Combine(HttpRuntime.AppDomainAppPath, "uploads"); 
    foreach (var file in Directory.GetFiles(path).OrderBy(f => new FileInfo(f).Length)) 
    { 
     var item = new FileInfo(file); 
%> 
<tr> 
    <td></td> 
    <td> 
     <%=Html.Encode(Path.GetFileName(item.Name))%> 
    </td> 
    <td> 
     <%=Html.Encode(Functions.FormatBytes(item.Length))%> 
    </td> 
    <td> 
     <%=Html.FileLink(item.Name)%> 
    </td> 
</tr> 
<% } %> 

Est-il possible d'accéder à ma variable f dans la boucle, ou est-il une autre façon de le faire, donc je n'ai pas à la dimension deux instances de FileInfo(file)?

Merci!

Répondre

6
var fileInfos = new DirectoryInfo(path).GetFiles().OrderBy(f => f.Length); 

foreach (var fileInfo in fileInfos) 
{ 
    ... 
} 
+0

ack, les solutions les plus simples me échappent toujours. merci :) – Anders

2

Votre point de vue dépasse vraiment ses responsabilités ici. Vous devez créer une classe qui correspond aux données que vous souhaitez afficher dans la vue, puis dans votre contrôleur, récupérer les données et remplir un IEnumerable <> de vos classes et le renvoyer dans le ViewModel, que votre vue peut alors simplement faire une boucle par.

+1

Merci John, je vais le faire. J'apprends encore MVC, donc j'apprécie vos critiques :) – Anders

Questions connexes