Преобразовать этот запрос 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)
Другие вопросы по тегам