我必须从数据库中获取记录,记录的最后OrderStatus
是Registered
。这就是我尝试查找那些记录的方法
List<Order> orders = db.Orders
.Include("OrderStatuses")
.Where(x => x.OrderStatuses.ToList().Last().Status == StatusOrder.Registered)
.ToList();
但我遇到异常
LINQ to Entities无法识别该方法 'Lomax.Models.OrderStatus LastOrderStatus' 方法,并且该方法不能转换为商店表达式。
有没有办法不首先从数据库中获取所有Orders
,然后再寻找最后一个OrderStatus
是我想要的?还是没关系(在速度上)?
订单类:
public class Order
{
[Key]
public int ID { get; set; }
(...)
public virtual ICollection<OrderStatus> OrderStatuses { get; set; }
}
OrderStatus类:
public class OrderStatus
{
[Key]
public int ID { get; set; }
public DateTime Date { get; set; }
public Enumerates.StatusOrder Status { get; set; }
[ForeignKey("Order")]
public int OrderID { get; set; }
public virtual Order Order { get; set; }
}
答案 0 :(得分:0)
Linq to实体不支持.Last()。 您可以使用orderby()和take()代替
List<Order> orders = db.Orders
.Include("OrderStatuses")
.Where(x => x.OrderStatuses.OrderByDescending(q => q.YourCol).First().Status == StatusOrder.Registered)
.ToList();