Это звучит как кошмар пользовательского интерфейса, но вы можете просто передать свой список сотрудников для просмотра. Затем создайте вложенный цикл, который проходит по командам внутри цикла, который проходит по сотрудникам. В Asp.Net MVC это будет выглядеть примерно так -
<table>
<thead>
<tr>
<td>Employee</td>
<td>Team</td>
</tr>
</thead>
<% foreach(var employee in Model.Employees) { %>
<% foreach (var team in employee.Teams) { %>
<tr>
<td><%=employee.Name %></td>
<td><%=team.Name %></td>
</tr>
<% } %>
<% } %>
</table>
Вы должны использовать ViewModel (DTO) в следующих случаях -
- если модель предметной области очень сложна и упрощение помогает читабельность
- , если вам нужно сделать некоторые изменения данных перед отображением
- , если вам нужно обновить значения при обратной передаче.
Я бы избежал второго варианта, поскольку он просто добавляет ненужную сложность (из того, что я могу сделать вывод из текущей предоставленной информации) в ваш домен: -)
Обновление
Если вы хотите, чтобы сотрудник без команд все еще отображался, вы можете установить это в представлении ...
<table>
<thead>
<tr>
<td>Employee</td>
<td>Team</td>
</tr>
</thead>
<% foreach(var employee in Model.Employees) { %>
<tr>
<% if (employee.Teams.Any()) { %>
<td><%=employee.Name %></td>
<td> - </td>
<% } else { %>
<% foreach (var team in employee.Teams) { %>
<td><%=employee.Name %></td>
<td><%=team.Name %></td>
<% } %>
<% } %>
</tr>
<% } %>
</table>
Очевидно, что чем больше подобных настроек пользовательского интерфейса, тем больше вероятность того, что вы захотите использовать ViewModel для очистки вашего View. Если вы обнаружите, что ваше представление начинает становиться нечитаемым из-за количества ссылок на встроенный код, то это, как правило, указывает на применимость ViewModel (DTO): -)