私はMVC 5/EF 6で働いています。私は複数の人のためのカレンダーを表示するビューを作成しようとしています。結果をグループ化し、結果をグループ化し、グループ化された結果で空でもすべての日付を表示します。
私は既に人によってグループ分けされたビューを持っており、検索範囲内のすべての日付のリストを表示します。しかし、もしその人がその日に予定されていることを何も持っていなければ、日付はその人の下に掲載されていません。
今のところ、何もスケジュールされていない空の日付は、「空の」人物グループの下にグループ化されています。
私の現在の結果:
Person:
-------------------------------
04/01/16 (blank)
04/02/16 (blank)
04/03/16 (blank)
Person: Jane
-------------------------------
04/04/2016: To Do Item
04/05/2016: To Do Item
Person: John
-------------------------------
04/04/2016: To Do Item
04/05/2016: To Do Item
は、どのように私はこの結果を得ることができますか?クエリは私が何とかDATERANGEリスト内のすべての日付に関連付けられている人の名前を取得する必要があることを理解
var activecal = db.Calendar.Where(x => (x.CalDate >= startdate && x.CalDate <= enddate).ToList();
// merge calendar with date range in search selected
var calendar = (from d in dateRange //dateRange = date range search
join c in activecal.ToList() on d equals c.CalDate into joinedResult
from r in joinedResult.DefaultIfEmpty()
select new CalVM
{
FullName = r == null ? null : r.FullName,
CalLocation = r == null ? null : r.CalLocation,
calDay = d.Date,
}).ToList();
ビュー
@{
foreach (var group in Model.GroupBy(a => a.FullName))
{
<h3>Person: @group.Key</h3>
<div class="table-responsive">
<table class="table table-hover small">
<tr>
<th>
Cal Day
</th>
<th>
Location
</th>
</tr>
@foreach (var i in group)
{
<tr>
<td>
@Html.DisplayFor(modelItem => i.calDay)
</td>
<td>
@Html.DisplayFor(modelItem => i.CalLocation)
</td>
</tr>
}
</table>
</div>
}
}
を表示するために戻っ
Person: Jane
-------------------------------
04/01/16 (blank)
04/02/16 (blank)
04/03/16 (blank)
04/04/2016: To Do Item
04/05/2016: To Do Item
Person: John
-------------------------------
04/01/16 (blank)
04/02/16 (blank)
04/03/16 (blank)
04/04/2016: To Do Item
04/05/2016: To Do Item
、私はちょうど午前どのようにそれを行うか分からない。日付範囲リストの唯一のパラメータは日付なので、参加するものはありません。
ありがとうございます。ビューのコードを追加できますか?これを別のビューモデルに渡すか、personToDos.ToList()を返す必要がありますか? – Daniela
_personToDos_は 'Dictionary> '型です。モデルとしてビューに直接戻すことも、他のデータを含むビュー・モデルに配置することもできます。私は私の答えにサンプルの剃刀のビューを追加しました –
Chris
私は実際には辞書オブジェクトをよく理解していませんが、それは動作しています!私はそれをよく理解するために、その話題を読まなければならないでしょう。再度、感謝します! – Daniela