Мне нужно запросить связанный объект на основе максимального значения в поле в связанном объекте, а затем отобразить результаты этого элемента.
Например, определены модели:
public class Student
{
public int StudentID {get; set;}
public string Name {get; set;}
public ICollection<ReportCard> ReportCards {get; set;}
}
public class ReportCard
{
public int ReportCardID {get; set;}
public int ProjectID { get; set; }
public Project Project { get; set; }
public int Result {get; set;}
public int Comment {get; set;}
public DateTime PublishDate {get; set;}
}
В контроллере бритвы:
public class LatestResultsModel : PageModel
{
...
public IList<Student> Students {get; set;}
public async Task<IActionResult> OnGetAsync()
{
Students = await _context.Student
.Include(student => student.ReportCard)
.ToListAsync();
}
}
В представлении бритвы:
@foreach (Student student in Model.Students)
{
<p>@student.Name</p>
<p>@student.ReportCard.Max(i => i.PublishDate).Result.ToString()</p>
}
После оператора Max я не могу запросить другие поля.Я попытался сделать несколько вещей, чтобы добиться такого результата фильтрации связанных данных.
Отфильтрованные включения не поддерживаются.
Существует ли какой-либо тип соединения, который может достичьэтот результат?
Он также не обрабатывает ситуацию, когда у ученика нет ReportCard.InvalidOperationException: обнуляемый объект должен иметь значение.