将SQL子查询转换为Linq查询

时间:2016-04-20 13:55:11

标签: entity-framework linq sql-server-2008 linq-to-sql sql-to-linq-conversion

我正在尝试将此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

1 个答案:

答案 0 :(得分:2)

如果您在UserGroupUserGroupRoleMapping之间存在一对多关系,并且您已在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;}
}