2010-05-21 4 views
2

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 

사용자와 보안 역할간에 다차원적인 관계가있어 이로 인해 혼란이 발생합니다.

감사합니다. 켈리

이 같이

답변

5

:

user.SecurityRoles.SelectMany(securityRoles => securityRoles.Permissions) 
        .Where(permissions => permissions.SecurableEntity.Name == "Unit" && permissions.PermissionType.Name == "Read") 
        .OrderByDescending(permissions => permissions.PermissionLevel.Value) 
+0

아 ... SelectMany! 내가 그걸 읽을거야. 고마워요! – KellySandwiches

+1

ReSharper는 쿼리 구문을 '메소드 체인'으로 (그리고 그 반대로) 자동으로 변환하는 유용한 기능을 제공합니다. [참고 : 나는 제트기와 관련이 없다] – jeroenh

1
 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) 
관련 문제