Entity framework 在具有导航属性的IQueryable上使用MAX和GROUP BY

Entity framework 在具有导航属性的IQueryable上使用MAX和GROUP BY,entity-framework,Entity Framework,我需要在具有导航属性的EntitySQL查询上使用MAX和GROUP BY。我有以下问题。我需要选择具有最新“已创建”列的记录,该列位于表“APPROVALS”的导航属性中 请帮助查询 public IQueryable<TravelRequest> GetTravelRequestswithChildrenForGuid(Guid ID) { IQueryable<TravelRequest> v = this.ObjectContext.TravelReques

我需要在具有导航属性的EntitySQL查询上使用MAX和GROUP BY。我有以下问题。我需要选择具有最新“已创建”列的记录,该列位于表“APPROVALS”的导航属性中

请帮助查询

public IQueryable<TravelRequest> GetTravelRequestswithChildrenForGuid(Guid ID)
{
   IQueryable<TravelRequest> v = this.ObjectContext.TravelRequests
   .Include("CarRentals").Include("CarRentals.CarRentalType")
   .Include("Approvals").Include("Approvals.ApprovalType")
   .Include("Accomodations")
   .Include("TravelRequestStatus").Where(t => t.RowGuid.Equals(ID));    

   foreach (TravelRequest t in v)
   {
      t.Flights.Clear();
      foreach (Flight f in GetFlightsForTravelRequest(t.RowGuid))
      {
         t.Flights.Add(f);
      }
   }

   return v;
}
public IQueryable GetTravelRequestswithChildrenForGuid(Guid ID)
{
IQueryable v=this.ObjectContext.TravelRequests
.Include(“CarRentals”).Include(“CarRentals.CarRentalType”)
.包括(“批准”).包括(“批准.批准类型”)
.包括(“住宿”)
.Include(“TravelRequestStatus”)。其中(t=>t.RowGuid.Equals(ID));
foreach(移动请求t以v表示)
{
t、 飞行。清除();
foreach(GetFlightsForTravelRequest(t.RowGuid)中的航班f)
{
t、 增加(f);
}
}
返回v;
}

在这种情况下,使用from select where符号可能更容易。通过示例查看LINQ 101组:

我不知道GetFlightsForTravelRequest方法有多复杂,但如果试图在数据层中重用代码,很容易会降低很多性能。一个专用查询通常更好。在代码中,使用for循环将失去延迟执行的好处

我的建议是考虑您想要执行的SQL查询,然后返回LINQ