将 SQL 个子查询转换为 Linq 查询
Converting a SQL subqueries to Linq query
我正在尝试将此 sql 转换为 Linq 查询,但没有成功。你能帮忙吗?
SELECT G.Id,G.UserGroupName, G.Status, G.IsDeleted ,(SELECT COUNT(*) FROM UserGroupMapping U WHERE U.UserGroupId=G.Id) [UserCount]
,(SELECT COUNT(*) FROM UserGroupRoleMapping R WHERE R.UserGroupId=G.Id) [RolesCount]
FROM UserGroup G
如果您在 UserGroup
和 UserGroupRoleMapping
之间存在一对多关系,并且您已在 EF 模型中正确表示该关系,那么您可以执行如下查询:
var query=context.UserGroups.Select(ug=>new{
Id=usg.Id,
UserGroupName=ug.UserGroupName,
Status=ug.Status,
IsDeleted=ug.IsDeleted,
RolesCount=ug.UserGroupRoles.Count()
});
我假设您的 UserGroup
实体中有集合导航 属性:
public class UserGroup
{
//...
public virtual ICollection<UserGroupRoleMapping> UserGroupRoles{get;set;}
}
我正在尝试将此 sql 转换为 Linq 查询,但没有成功。你能帮忙吗?
SELECT G.Id,G.UserGroupName, G.Status, G.IsDeleted ,(SELECT COUNT(*) FROM UserGroupMapping U WHERE U.UserGroupId=G.Id) [UserCount]
,(SELECT COUNT(*) FROM UserGroupRoleMapping R WHERE R.UserGroupId=G.Id) [RolesCount]
FROM UserGroup G
如果您在 UserGroup
和 UserGroupRoleMapping
之间存在一对多关系,并且您已在 EF 模型中正确表示该关系,那么您可以执行如下查询:
var query=context.UserGroups.Select(ug=>new{
Id=usg.Id,
UserGroupName=ug.UserGroupName,
Status=ug.Status,
IsDeleted=ug.IsDeleted,
RolesCount=ug.UserGroupRoles.Count()
});
我假设您的 UserGroup
实体中有集合导航 属性:
public class UserGroup
{
//...
public virtual ICollection<UserGroupRoleMapping> UserGroupRoles{get;set;}
}