Преобразовать этот запрос Linq из синтаксиса запроса в лямбда-выражение
Я не уверен, что мне нравится синтаксис запросов linq... это просто не мои предпочтения. Но я не знаю, как будет выглядеть этот запрос, используя лямбда-выражения, кто-то может помочь?
from securityRoles in user.SecurityRoles
from permissions in securityRoles.Permissions
where permissions.SecurableEntity.Name == "Unit" && permissions.PermissionType.Name == "Read"
orderby permissions.PermissionLevel.Value descending
select permissions
Существует взаимосвязь между многими пользователями и ролями безопасности, что делает это еще более запутанным.
Спасибо! Келли
2 ответа
Решение
Как это:
user.SecurityRoles.SelectMany(securityRoles => securityRoles.Permissions)
.Where(permissions => permissions.SecurableEntity.Name == "Unit" && permissions.PermissionType.Name == "Read")
.OrderByDescending(permissions => permissions.PermissionLevel.Value)
user.SecurityRoles.SelectMany(securityRoles => securityRoles.Permissions,
(securityRoles, permissions) => new {securityRoles, permissions}).Where(
@t => permissions.SecurableEntity.Name == "Unit" && permissions.PermissionType.Name == "Read").OrderByDescending(
@t => permissions.PermissionLevel.Value).Select(@t => permissions)