На данный момент у меня есть таблица, которая выглядит так:

Цель этой таблицы - показать, сколько случаев произошло в каждом месте (слева) в течение текущей недели.
В моей базе данных есть 3 таблицы, которые я использую для создания этой таблицы.
Таблица первая
public partial class code_WeighLocation
{
public code_WeighLocation()
{
tbl_WeighAssc = new HashSet<tbl_WeighAssc>();
}
public int ID { get; set; }
[Required]
[StringLength(50)]
public string Weigh_Location { get; set; }
public bool Active { get; set; }
public virtual ICollection<tbl_WeighAssc> tbl_WeighAssc { get; set; }
}
Таблица вторая - Таблица ассоциации
public partial class tbl_WeighAssc
{
public int Id { get; set; }
public int WeighLocationId { get; set; }
public int TEUId { get; set; }
public int OccurenceCount { get; set; }
public virtual code_WeighLocation code_WeighLocation { get; set; }
public virtual tbl_TEUForm tbl_TEUForm { get; set; }
}
Таблица три
public partial class tbl_TEUForm
{
public tbl_TEUForm()
{
tbl_TEUArrestAssc = new HashSet<tbl_TEUArrestAssc>();
tbl_WeighAssc = new HashSet<tbl_WeighAssc>();
tblTEUInspectionAsscs = new HashSet<tblTEUInspectionAssc>();
}
public int Id { get; set; }
public string PersonnelIBM { get; set; }
[Column(TypeName = "date")]
public DateTime EventDate { get; set; }
public bool Active { get; set; }
public virtual ICollection<tbl_TEUArrestAssc> tbl_TEUArrestAssc { get; set; }
public virtual tblPersonnel tblPersonnel { get; set; }
public virtual ICollection<tbl_WeighAssc> tbl_WeighAssc { get; set; }
public virtual ICollection<tblTEUInspectionAssc> tblTEUInspectionAsscs { get; set; }
}
Теперь мой взгляд принимает модель представления:
ViewModel
public class PersonnelDetailsVm
{
private static ConnectionStringName db = new ConnectionStringName();
public PersonnelDetailsVm()
{
CurrentWeekDates = new List<DateTime>();
}
public string IBM { get; set; }
[Display(Name = "Name")]
public string UserName { get; set; }
[Display(Name = "TEU OT Rate")]
public string Teu_OT_Rate { get; set; }
[Display(Name = "MCSAP OT Rate")]
public string Mcsap_OT_Rate { get; set; }
[StringLength(10)]
public string Division { get; set; }
public bool Active { get; set; }
public List<DateTime> CurrentWeekDates { get; set; }
public List<tbl_WeighAssc> WeighAssociations { get; set; }
public List<code_WeighLocation> WeighLocations => db.code_WeighLocation.ToList();
}
На мой взгляд, для создания таблицы, которую я показываю выше, мой код выглядит следующим образом:
<table class="table table-bordered table-hover mt-3">
<thead>
<tr>
<th></th>
@foreach (var date in Model.CurrentWeekDates)
{
<th>@date.ToString("ddd") <br /> @date.ToShortDateString()</th>
}
</tr>
</thead>
<tbody>
@foreach (var weighLocation in Model.WeighLocations)
{
<tr>
<td>@weighLocation.Weigh_Location</td>
</tr>
}
</tbody>
</table>
Теперь в моей базе данных, в таблице связей, у меня есть только 2 записи, и обе записи были введены в пятницу, 9/7/2018 . Одна запись предназначена для WIMS / SR-1 со счетом вхождений 2. Другая - для FIXED / Blackbird со счетчиком вхождений в 2. Итак, моя цель - показать эти значения в Пт 9/7/2018 в их соответствующих строках / ячейках и каждой другой ячейке заполняется 0
, поскольку в таблице сопоставлений для этих местоположений в течение текущей недели нет других записей.
Вот мой код контроллера, показывающий, как я заполняю дни недели и получаю правильные записи на основе этих дат.
var startOfWeek = DateTime.Today.AddDays((int) CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek -
(int) DateTime.Today.DayOfWeek);
person.CurrentWeekDates = Enumerable.Range(0, 7).Select(i => startOfWeek.AddDays(i)).ToList();
var teuFormIds = db.tbl_TEUForm
.Where(x => person.CurrentWeekDates.Contains(x.EventDate) && x.PersonnelIBM == person.IBM).Select(t => t.Id).ToList();
person.WeighAssociations = db.tbl_WeighAssc.Where(x => teuFormIds.Contains(x.TEUId)).ToList();
Любая помощь приветствуется