簡體   English   中英

多對多的Entity Framework GetUsersInRole()

[英]many to many Entity Framework GetUsersInRole()

我有兩個實體類型:角色和用戶,有很多關系。 即Role具有Users屬性,User具有Roles屬性。 我必須使用屬於已定義角色的用戶名來獲取字符串數組。 我寫了一些代碼,但它並不優雅。 我想用一個linq表達式做到這一點。 可能嗎?

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();
}

看這個:

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();
    }
}
return db.Roles.Where(r => r.Name == roleName)
               .SelectMany(r => r.Users)
               .Select(u => u.UserName)
               .ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM