カテゴリの下にグループ化されたデータベースからデータを表示できます。このアプリケーションは、タイムシートアプリケーションでの試行です。アイテムを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
}
}
今、これが失敗し、結果がコンパイラに応じて、リストに変換することはできませんので。私はこの表現が私にコレクションのコレクションを与えるだろうと思って、私はこれを返すことができ、コントローラで取得し、表示のためにビューに渡すことができると思いました。どうやらない。
どうすればよいですか?誰でも私に正しいタイプを返す方法を教えてもらえれば、また、ビューがそれを受け取り、それをProjectで分類して表示する方法の例を私にも与えることができれば、本当にありがとう!
EDIT:これは(以下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です)
私は試しましたが、どちらもうまくいきませんでした。上記の私のアップデートを参照してください... – Anders
私の間違いの申し訳ありませんが、更新を参照してください。戻り値の型はIEnumerable> –
ありがとうございました。 – Anders