linq groupby в строго типизированном MVC View - PullRequest
3 голосов
/ 13 мая 2010

Как получить результат IGrouping для сопоставления с представлением?

У меня есть этот запрос:

var groupedManuals = manuals.GroupBy(c => c.Series);
return View(groupedManuals);

Какое правильное отображение для объявления ViewPage?

Inherits="System.Web.Mvc.ViewPage<IEnumerable<ProductManual>>"

Ответы [ 3 ]

4 голосов
/ 13 мая 2010

Я все еще на начальных этапах изучения Linq, поэтому я могу ошибаться, но я думаю, что для этого ViewPage должно быть что-то вроде

Inherits="System.Web.Mvc.ViewPage<IEnumerable<IGrouping<Series, Manual>>>
3 голосов
/ 13 мая 2010

В случае помощи другим. Это то, чего я пытался достичь.

Код действия

var groupedManuals = manuals.GroupBy(c => c.Series);
return View(groupedManuals);

Вид

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<IGrouping<string, ProductManualModel>>>" %>
 <% foreach (var item in Model)
           { %>
        <div class="manual-category">
            <h5>
                <%= Html.Encode(item.Key) %> Series</h5>
            <ul>
                <% foreach (var m in item)
                   { %>
                <li><a href="<%=Url.ManualLink(m.Id) %>" class="model-manuals">
                    <%= m.Id %></a> </li>
                <% } %>
            </ul>
    </div>

IGrouping - это, так сказать, список списков. С «Ключом», являющимся сгруппированным свойством в исходном списке.

0 голосов
/ 13 мая 2010

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

Вы также можете использовать ViewData["Products"] для установки информации о коллекции, которую вы хотите видеть на своей странице Просмотр aspx.

...