Преобразование подзапросов 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;}
}