C# 实体框架核心从父-子集合的

C# 实体框架核心从父-子集合的,c#,.net-core,entity-framework-core,C#,.net Core,Entity Framework Core,我使用的是entity framework core,具有简单的表结构,其中系统有许多日志,但对于我的某些功能,我希望拥有该集合的最后一个子项,因此我尝试: Models.Entities.System system = await Context.Systems .Include(log => log.MaintenanceLogs) .FirstOrDefaultAsync(system=> system.Id == system); 但我知道我不能补充 .Incl

我使用的是entity framework core,具有简单的表结构,其中系统有许多日志,但对于我的某些功能,我希望拥有该集合的最后一个子项,因此我尝试:

Models.Entities.System system = await Context.Systems
   .Include(log => log.MaintenanceLogs)
   .FirstOrDefaultAsync(system=> system.Id == system);
但我知道我不能补充

.Include(log => log.MaintenanceLogs).Last() 
好吧,它不会工作,我可以创建手动查询并得到我想要的,但这不是重点。 我还可以获取所有日志,并在查询实现后获取最后一个日志,但仍然可以有大量的日志和数据库记录,我只需要最后一个日志,所以为什么要浪费资源呢

原因是,我需要从上一个日志中获取一个值,并基于该值更新系统(当然是所有事务)

能做到吗?

你能做到吗

Models.Entities.MaintenanceLog log=wait Context.MaintenanceLogs
.Include(log=>log.System)
.LastOrDefaultAsync(log=>log.System.Id==System);
相反?你知道,换个方向

这将只获取MaintenanceLogs表中的最后一个条目,其中
System.Id
等于
System
变量的值。

您能做什么

Models.Entities.MaintenanceLog log=wait Context.MaintenanceLogs
.Include(log=>log.System)
.LastOrDefaultAsync(log=>log.System.Id==System);
相反?你知道,换个方向


这将只获取MaintenanceLogs表中的最后一个条目,其中
System.Id
等于
System
变量的值。

按日志日期降序,然后取(1),然后调用FirstOrDefault(),尽管可能不必先调用Take(1)。按日志日期降序,然后取(1),然后调用FirstOrDefault(),尽管可能不需要先调用Take(1)。