实体框架是否允许您过滤属性?

问题描述 投票:0回答:1

我想知道 EF-Core 是否为我们提供了拥有已使用 where 子句“预过滤”的属性的能力?

例如:

我有一张

Users
的桌子(..因此..
DbSet<User> Users
。) 每个用户可以有零到多个
Orders
(..因此
DbSet<Order> Orders
)。

所以用户看起来像:

public class User
{
    public int UserId { get; set; }
    public string Name { get; set; }
    public List<Order> Orders { get; set; } 
}

所以现在我想要拥有一个最新订单的房产:

例如

public Order MostRecentOrder { get; set; }

这将由硬编码规则决定:最近的订单。

这可能吗?

否则我觉得我必须在我关心这个属性的地方编写的每个 EF-core 查询中都有这个 LINQ 查询。

另外,我曾经尝试创建一个扩展方法,但是 EF 查询生成器或其他东西崩溃了,说它无法将其转换为 SQL。

那么,这可能吗?

c# .net sql-server-2008 entity-framework-core
1个回答
0
投票

首先,您可以使用

将列表设置为 Id 降序排列
OrderByDescending(x => x.Id)

然后使用后

FirstOrDefault() 

您可以获取最近的订单。

或者如果您想使用一行设置它,那么您可以使用以下代码

Order MostRecentOrder = await Orders.OrderByDescending(x => x.OrderId).FirstOrDefault();
© www.soinside.com 2019 - 2024. All rights reserved.