Преобразование подзапросов SQL в запрос Linq

Я пытаюсь преобразовать этот 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 ответ

Решение

Если у вас есть отношения один ко многим между 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;}
}
Другие вопросы по тегам