Я хочу иметь возможность отображать данные из базы данных, сгруппированной по категориям.Приложение представляет собой попытку применения расписания.Схема базы данных выглядит следующим образом:
(table) TimeSegments
TimeSegmentID
Hours
Date
ConsultantID (FK)
TaskID (FK)
ProjectID (FK)
(table) Projects
ProjectID
ProjectName
(table) Tasks
TaskID
TaskName
(table) Consultants
ConsultantID
ConsultantName
Я могу получить данные из модели (здесь называемые ts) и отобразить их, но я хочу, чтобы они были сгруппированы так, чтобы я мог показывать часы по проекту и задаче,Вот моя попытка до сих пор.Я предположил, что выражение group в 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
}
}
Теперь это не удается, потому что результат не может быть преобразован в список в соответствии с компилятором.Я думал, что это выражение даст мне коллекцию коллекций, и что я смогу вернуть это, получить его в контроллере и передать его в представление для отображения.Видимо, нет.
Так как мне поступить?Если бы кто-нибудь мог показать мне, как вернуть правильный тип, и, предпочтительно, также дать мне пример того, как представление может получить его и отобразить его по категориям в Project, я был бы очень признателен!
РЕДАКТИРОВАТЬ:
Это тоже не работает (тип возврата, предложенный 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;
}
}
Компилятор говорит, что не может конвертировать [blabla] IQueryable в этот тип (типы похожи, но тип возврата)IQueryable)