Я пытаюсь создать «простое» приложение расписания, которое почти выполняет то, что мне нужно, я не уверен, что это самый эффективный способ сделать это, поэтому, пожалуйста, сообщите мне, если у вас есть лучшие идеи... Я получил помощь здесь в SO ранее (см. Группировка элементов с помощью Linq и отображение в таблице в виде MVC , где вы также можете увидеть схему базы данных).Теперь мне просто нужно иметь возможность группировать на еще одном вложенном уровне.
Теперь я получаю вид таблицы, который выглядит примерно так:
Задача проекта 1 2 3 (датыс часами в ячейках)
ProjA-анализ 8 8 8
ProjB-анализ 8 7 8
(Etc)
Вот свойство в модели представления, котораяЯ использую для заполнения таблицы:
public IEnumerable<IGrouping<Project, TimeSegment>> TimeSegmentsByProject
{
get
{
var projectGroups = from timeSegment in ts.TimeSegments
group timeSegment by timeSegment.Project
into projectGroup
select projectGroup;
return projectGroups.ToList();
}
}
А вот код в представлении:
<table>
<tr>
<th>
Projekt
</th>
<th>
Aktivitet
</th>
<th>
Timmar
</th>
</tr>
<% foreach (var item in Model.TimeSegmentsByProject)
{ %>
<tr>
<td>
<%:item.Key.Name %>
</td>
<td>
<table>
<% foreach (var i in item)
{ %>
<tr>
<td>
<%: i.Task.Name %>
</td>
</tr>
<% } %>
</table>
</td>
<td>
<table>
<% foreach (var i in item)
{ %>
<tr>
<% for (int index = 0; index < 30; index++)
{%>
<td width="20px">
<%if (i.Date.Substring(8) == index.ToString())
{ %>
<%: i.Hours %>
<% } %>
</td>
<% } %>
</tr>
<% } %>
</table>
</td>
</tr>
<% } %>
</table>
Теперь проблема в том, что это работает нормально, но даже несмотря на то, что Projectгруппируется и появляется только один раз для каждого проекта, задача повторяется с новой строкой для того же имени задачи.Я хочу каждую задачу только один раз, как и для проекта.Но выражения группы linq и все, что меня уже запутало, так что я понятия не имею, как это сделать.Я немного над головой, я думал, что приложение с расписанием не будет такой сложной задачей (по крайней мере, основной).Но я довольно близок к тому, что можно было бы сделать, если бы я мог просто заставить эту группу задач работать, чтобы я не повторял это.
Буду признателен за любые советы о том, как изменить мой код для этого!(И если вы думаете, что я делаю это неправильно, скажите, пожалуйста, как)