0

誰かがこのモデルからエンティティに対するLINQのユーザーのユーザーグループ関係を取得する方法を教えてもらえますか?

私はそのような方法で病棟の後にそれをループできるようにするためにリストを取得する必要があります:

foreach (QASModel.UserGroup usergroup in ...)

方法に関するいくつかの例を提供できる場合のボーナスポイント:

  • ユーザーIDに基づいてユーザーの役割権限「パス」を取得する
  • IDに基づいてユーザーの役割を取得する
  • 役割IDに基づいて、特定の役割のすべてのユーザーを取得します。これも役立ちます。
4

2 に答える 2

1

私はこれがあなたが探しているものだと思います:

int uID = 55;    //The user ID that you're looking for

//Assumption for the data context name
QASDataContext ctx = new QASDataContext();   

//--(1)--
//Get the user's user groups
var user = (from u in ctx.Users
 where u.ID == uID
 select u).FirstOrDefault();

if(user != null)
{
    foreach(UserGroup in user.UserGroups)
    {
        //do your thing
    }

    //--(2)--
    //Get User's Role Permission Path(s)
    List<string> PermissionPaths = new List<string>();

    foreach(UserRole role in user.UserRoles)
    {
        foreach(UserRolesPer perPath in role.UserRolesPers)   //Can't see the whole table name
        {
            PermissionPaths.Add(perPath.Path);
        }
    }

    //You can use the PermissionPaths object now

    //--(3)--
    //Get a User's Role based on the User ID 
    //Use the same user object from above
    UserRole uRole = user.UserRole;
}

//--(4)--
//Get a all user(s) of a specific role based on the role ID
int myRoleID = 43;

var role = (from r in ctx.UserRoles
    where r.ID == myRoleID 
    select r).FirstOrDefault();

if(role != null)
{
    foreach(User u in role.Users)
    {
        // do something
    }
}

私はこれをコンパイラーで実行しなかったことに注意してください、しかしこれはあなたが探しているものの基本的な考えをあなたに与えるはずです。

于 2011-05-29T21:39:10.413 に答える
0
IEnumerable<UserGroup> userGroups = from ug in context.UserGroups
                                    from u in ug.Users
                                    where u.ID == [userID]
                                    select ug;

IEnumerable<string> userRoles = from ur in context.UserRoles
                                from rps in ur.UserRolesPermissions
                                where ur.UserId == id
                                select rps.Path;

IEnumerable<User> usersFromSpecificRole = from u in context.Users
                                          where u.UserRole.ID == [roleID]
                                          select u;

確認する時間がありませんでしたので、何か問題がありましたらお知らせください。修正させていただきます。

于 2011-05-29T22:09:44.660 に答える