Отображение элемента, отличного от ключа, с помощью группового цикла foreach - PullRequest
0 голосов
/ 08 октября 2009

В настоящее время я использую groupby с циклом foreach для отображения списка вложенных записей.

Однако я хочу использовать идентификатор в качестве ключа, чтобы я мог использовать его для создания динамических селекторов CSS и т. Д.

Но я хочу иметь возможность показывать имя каждой из групп перед повторным циклом secondarly.

Я думаю, что код сделает его более понятным.

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

Я знаю, что мог бы ограничить итерации цикла заголовка, но это выглядит очень неправильно

   <ul id="GoalAndTaskList">
   <% foreach (var group in Model.GroupBy(item => item.goalId)) { %>

   <li>

   /////This code is just to display the name, but it iterates 
   /////through the whole group, so the title is rendered many times

   <% foreach (var item in group)
   { %>
   <%= Html.Encode(item.goalName) %>   
   <% } %>

   ///////// Before this I was using group.key , which meant an Id was the title
   /////////

   <table id="taskTable<%= Html.Encode(group.Key) %>">
   <% foreach (var item in group) { %>

   <tr id="<%= Html.Encode(item.sortOrder) %>">
   <td class="dragHandle">&nbsp;</td>
   <td><%= Html.Encode(item.sortOrder) %></td>
   <td>
   <input type="text" name="<%= Html.Encode(item.taskId) %>" value="<%=Html.Encode(item.taskName) %>"/>       
   </td>
   <td>
   <a id="DeleteTask<%= Html.Encode(item.taskId) %>">Delete Task</a>
   </td>       
   </tr>  
   <% } %>    
   </table>
   <br /><a id="AddNew2<%= Html.Encode(group.Key) %>">Add new task</a><br /><br />    
   </li>
   <% } %>
   </ul>

1 Ответ

0 голосов
/ 08 октября 2009

Что я сделал, это было

<% foreach (var item in group.Take(1))
  { %>
  <%= Html.Encode(item.goalName) %>   
 <% } %>

Кажется, что это действительно неправильно, если кто-то делает это, может кто-нибудь предложить более чистый способ сделать это?

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