有没有办法强制实体框架使用子查询的别名,而不是为 OrderBy 加倍它?
var results = Users.Select( u => new
{
u.idUser,
u.Name,
nbChilds = u.Children.Count
})
.OrderBy( u => u.nbChilds );
Run Code Online (Sandbox Code Playgroud)
这将在 SQL 中转换为:
SELECT [u].[idUser] AS [idUser], [u].[name] AS [Name], (
SELECT COUNT(*)
FROM [Children] AS [c0]
) AS [nbChilds]
FROM [Users] AS [u]
ORDER BY (
SELECT COUNT(*)
FROM [Children] AS [c]
)
Run Code Online (Sandbox Code Playgroud)
这意味着它将对子项进行两次计数。就我而言,这对性能造成严重影响,我想避免。有没有办法告诉 Linq 在选择中使用别名,以便输出为:
SELECT [u].[idUser] AS [idUser], [u].[name] AS [Name], (
SELECT COUNT(*)
FROM [Children] AS [c0]
) AS [nbChilds]
FROM [Users] AS [u] …Run Code Online (Sandbox Code Playgroud)