C# 可以在循环内利用foreach的LINQ部分吗?

C# 可以在循环内利用foreach的LINQ部分吗?,c#,asp.net-mvc,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

我在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>
<% } %>
newfileinfo(f.Length))
{
var项目=新文件信息(文件);
%>
是否可以在循环中访问我的变量
f
,或者是否有其他方法可以这样做,这样我就不必对
FileInfo(file)
的两个实例进行标注


谢谢!

你的视图确实超出了它在这里的职责范围。你应该创建一个类,映射到你想在视图中显示的数据,然后在你的控制器中,检索数据并填充一个IEnumerable,然后在ViewModel中返回,然后你的视图可以简单地循环通过它。

谢谢john,我会我就是这么做的。我还在学习MVC,所以我很感激你的批评:)
var fileInfos = new DirectoryInfo(path).GetFiles().OrderBy(f => f.Length);

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