小编Red*_*one的帖子

如何在选择表达式中重用子查询?

在我的数据库中,我有两个表OrganizationsOrganizationMembers,具有 1:N 关系。

我想表达一个查询,该查询返回每个组织的第一个组织所有者的名字和姓氏。

我当前的选择表达式有效,但它既不高效也不适合我,因为每个子查询都被多次定义。

await dbContext.Organizations
    .AsNoTracking()
    .Select(x =>
    {
        return new OrganizationListItem
        {
            Id = x.Id,
            Name = x.Name,
            OwnerFirstName = (x.Members.OrderBy(member => member.CreatedAt).First(member => member.Role == RoleType.Owner)).FirstName,
            OwnerLastName = (x.Members.OrderBy(member => member.CreatedAt).First(member => member.Role == RoleType.Owner)).LastName,
            OwnerEmailAddress = (x.Members.OrderBy(member => member.CreatedAt).First(member => member.Role == RoleType.Owner)).EmailAddress
        };
    })
    .ToArrayAsync();
Run Code Online (Sandbox Code Playgroud)

是否可以以某种方式总结或重用子查询,所以我不需要多次定义它们?

请注意,我已经尝试将子查询结果存储在变量中。这不起作用,因为它需要将表达式转换为语句体,这会导致编译器错误。

c# entity-framework-core

4
推荐指数
1
解决办法
2056
查看次数

标签 统计

c# ×1

entity-framework-core ×1