在我的数据库中,我有两个表Organizations和OrganizationMembers,具有 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)
是否可以以某种方式总结或重用子查询,所以我不需要多次定义它们?
请注意,我已经尝试将子查询结果存储在变量中。这不起作用,因为它需要将表达式转换为语句体,这会导致编译器错误。