2012-12-28 1 views
1

많은 관계가 많은 역할과 사용자라는 두 가지 엔터티 유형이 있습니다. 즉 Role에는 Users 속성이 있고 User에는 Roles 속성이 있습니다. 정의 된 역할에 속하는 사용자 이름으로 문자열 배열을 가져와야합니다. 몇 가지 코드를 작성했지만 우아하지 않습니다. 나는 한 linq 표현으로 그것을하고 싶다. 가능한가? 이것many to many Entity Framework GetUsersInRole()

public override string[] GetUsersInRole(string roleName) 
{ 
    List<string> names = new List<string>(); 
    using (MembershipDb db = new MembershipDb()) 
    { 
     Role role = db.Roles.FirstOrDefault(r => r.Name == roleName); 
     foreach (User u in role.Users) 
     { 
      names.Add(u.UserName); 
     } 
    } 
    return names.ToArray(); 
} 
+0

이 (가)''Roles' 고유 Role.Name'인가? –

+0

@HamletHakobyan 예 – Wachburn

답변

2
return db.Roles.Where(r => r.Name == roleName) 
       .SelectMany(r => r.Users) 
       .Select(u => u.UserName) 
       .ToArray(); 
2

봐 :

public override string[] GetUsersInRole(string roleName) 
{ 
    using (MembershipDb db = new MembershipDb()) 
    { 
     return db.Roles 
      .Where(r => r.Name == roleName) 
      .SelectMany(r => r.Users, (r, s) => s.User.UserName).ToArray(); 
    } 
} 
+0

제공된 이름에 대한 역할이 없으면 어떻게해야합니까? –

+0

@ lazyberezovsky, 네가 맞아. 결정된. –