是否可以在循环内使用foreach的LINQ部分?

时间:2009-09-17 19:06:05

标签: c# asp.net-mvc

我在ASP.NET MVC应用程序中有这个视图:

<%
    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>
<% } %>

是否可以在循环中访问我的变量f,或者是否有其他方法可以执行此操作,因此我不必标注FileInfo(file)的两个实例?

谢谢!

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

你的观点在这里超越了它的责任。您应该创建一个类,该类映射到要在视图中显示的数据,然后在控制器中,检索数据并填充IEnumerable&lt;&gt;您的类在ViewModel中返回,然后您的视图可以简单地循环。