Пока вы не можете достичь этого напрямую, потому что ни энергичная, ни ленивая загрузка в EF Core не поддерживает упорядочение или фильтрацию в дочерней коллекции.
Поскольку ваше требование неясно, я предоставляю возможное альтернативное решение для всех возможных случаев:
1) Если вы хотите последний FormSubmit
определенного пользователя:
var users = DbContext.Users
.Include(x => x.ApplicationUserGroups)
.ThenInclude(x => x.ApplicationGroup)
.Include(x => x.FormSubmit)
.ThenInclude(x => x.FormLevel)
.Where(x => true && x.UserId == userId).FirstOrDefault();
var latestFormSubmit = users.Select(u => u.FormSubmit).OrderByDescending(fs => fs.CreationDate).FirstOrDefault();
2) Если вы хотите последний FormSubmit
среди всех пользователей:
var users = DbContext.Users
.Include(x => x.ApplicationUserGroups)
.ThenInclude(x => x.ApplicationGroup)
.Include(x => x.FormSubmit)
.ThenInclude(x => x.FormLevel)
.Where(x => true).ToList();
var latestFormSubmit = users.SelectMany(u => u.FormSubmit).OrderByDescending(fs => fs.CreationDate).FirstOrDefault();
//Or
var latestFormSubmit = DbContext.FormSubmits.Include(x => x.FormLevel).OrderByDescending(fs => fs.CreationDate).FirstOrDefault();
Примечание. Вы можете опустить .Include(x => x.ApplicationUserGroups).ThenInclude(x => x.ApplicationGroup)
в запросе, если вам нужна только последняя FormSubmit
.