>我需要在具有导航属性的 EntitySQL 查询上使用 MAX 和 GROUP BY。我有以下查询。我需要选择具有最新"已创建"列的记录,该列存在于"批准"表的导航属性中。
请帮助查询。
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;
}
在这种情况下,使用 from-select-where 表示法可能更容易。通过示例查看 LINQ 101 组:http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
我不知道您的GetFlightsForTravelRequest方法有多复杂,但是您可以通过尝试在数据层中重用代码来轻松降低性能。一个专用查询通常更好。在代码中,使用 for 循环将失去延迟执行的好处。
我的建议是考虑要执行的 SQL 查询,然后回到 LINQ。