我希望能夠顯示分組下的數據庫中的數據。該應用程序是一個時間表應用程序的嘗試。數據庫模式是這樣的:使用Linq組合項目並在MVC視圖中顯示在表格中
(table) TimeSegments
TimeSegmentID
Hours
Date
ConsultantID (FK)
TaskID (FK)
ProjectID (FK)
(table) Projects
ProjectID
ProjectName
(table) Tasks
TaskID
TaskName
(table) Consultants
ConsultantID
ConsultantName
我可以從模型(這裏稱爲TS)獲取數據並顯示它,但我希望它可以分組,這樣我可以顯示通過項目和任務小時。這是我迄今的嘗試。我猜Linq中的組聲明是合適的,但我不知道這是正確的:
public IList<TimeSegment> TimeSegmentsByProject
{
get
{
var projectGroups = from timeSegment in ts.TimeSegments
group timeSegment by timeSegment.Project
into projectGroup
select projectGroup;
return projectGroups.ToList(); //Doesn't work
}
}
現在失敗了,因爲結果無法根據編譯器轉換成一個列表。我認爲這個表達會給我一個集合的集合,並且我將能夠返回它,在控制器中獲取它,並將它傳遞給視圖以供顯示。顯然不是。
那麼我應該怎麼做呢?如果任何人都可以告訴我如何返回正確的類型,並且最好給我一個視圖如何接收並顯示按項目分類的例子,我會非常感激!
編輯:
這不工作,要麼(低於The_Smallest建議返回類型):
public IGrouping<Project, TimeSegment> TimeSegmentsByProject
{
get
{
var projectGroups = from timeSegment in ts.TimeSegments
group timeSegment by timeSegment.Project
into projectGroup
select projectGroup;
return projectGroups;
}
}
編譯器說,它不能轉換[布拉布拉] IQueryable的此類型(類型相似,但返回類型爲IQueryable)
我試過了,但它也沒有工作,請參閱我上面的更新... – Anders 2010-11-26 10:54:53