Возможно ли использовать LINQ-часть foreach внутри цикла? - PullRequest
2 голосов
/ 17 сентября 2009

У меня есть это представление в приложении 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 ]

6 голосов
/ 17 сентября 2009
var fileInfos = new DirectoryInfo(path).GetFiles().OrderBy(f => f.Length);

foreach (var fileInfo in fileInfos)
{
   ...
}
2 голосов
/ 17 сентября 2009

Ваш взгляд действительно переходит свои обязанности здесь. Вы должны создать класс, который сопоставляется с тем, какие данные вы хотите отобразить в представлении, а затем в своем контроллере извлечь данные и заполнить IEnumerable <> ваших классов и вернуть его в ViewModel, которую ваше представление затем может просто цикл через.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...