gpt4 book ai didi

c# - 在 Where() 中使用 ToList().Last() 进行 Entity Framework 查询

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:08 24 4
gpt4 key购买 nike

我必须从数据库中获取 OrderStatus 的最后一个是 Registered 的记录。这就是我试图找到那些记录的方式

    List<Order> orders = db.Orders
.Include("OrderStatuses")
.Where(x => x.OrderStatuses.ToList().Last().Status == StatusOrder.Registered)
.ToList();

但是我遇到了异常

LINQ to Entities does not recognize the method 'Lomax.Models.OrderStatus LastOrderStatus' method, and this method cannot be translated into a store expression.

有没有办法不先从数据库中获取所有 Orders,然后寻找我想要的最后一个 OrderStatus?或者(速度)无关紧要?

订单类:

public class Order
{
[Key]
public int ID { get; set; }
(...)
public virtual ICollection<OrderStatus> OrderStatuses { get; set; }
}

订单状态类:

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; }
}

最佳答案

实体的 Linq 不支持 .Last()。您可以改用 orderby() 和 take()

 List<Order> orders = db.Orders
.Include("OrderStatuses")
.Where(x => x.OrderStatuses.OrderByDescending(q => q.YourCol).First().Status == StatusOrder.Registered)
.ToList();

关于c# - 在 Where() 中使用 ToList().Last() 进行 Entity Framework 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52119401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com