我想創建一個「簡單」的時間表應用程序,幾乎正在做我需要做的事情,我不確定這是做這件事的最有效的方式,所以請給我反饋,如果你有更好的想法.. 。我在SO之前在這裏得到了幫助(請參閱Group items with Linq and display in table in MVC view,您還可以在其中看到數據庫模式)。現在我只需要能夠在更多的嵌套級別進行分組。與Linq的嵌套分組?
我現在得到的是一種表佈局看有點像這樣:
項目任務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組表達式和所有已經讓我感到困惑的事情,所以我不知道如何做到這一點。我在這裏有點頭痛,我認爲時間表應用程序不會是一件很難的事情(至少是基本的)。但是,如果我能夠完成這個任務分組的工作,我就可以做得相當接近,所以我不會重複它。
有關如何更改我的代碼來做到這一點的任何意見,將不勝感激! (如果你認爲我做錯了,請告訴我如何)
謝謝,但我不能得到它的工作。編譯器抱怨代碼中的所有東西......我不明白i.Date.Substring(8)中的「i」)來自哪裏。此外,ts2.Hours中的小時數等編譯器無法識別... – Anders 2010-11-27 12:39:16