0

LINQを使用してaspnetテーブルを結合する方法を理解するのに苦労しています。だからここに私の質問があります。

これらのaspnetテーブルを結合する方法、またはLINQ / MVC 3を使用してこれらのaspnetテーブルの正確な列名またはデータを取得する方法。aspnet_Membership、aspnet_Users、aspnet_UsersInRoles、およびaspnet_Roles。

値またはその列名を取得したら、別のデータベースにある他の2つのテーブルにそれらを結合します。

これが、LINQステートメントに変換したいsqlserverのコードです。

SELECT AU.UserId,
       AU.UserName,
       ( MNTP.LastName + ',' + MNTP.FirstName + ' '
         + LEFT(MNTP.MiddleName, 1) + '.' ) Name,
       AR.RoleName
FROM   aspnetdb..aspnet_Membership AM
       INNER JOIN aspnetdb..aspnet_Users AU
               ON AM.UserId = AU.UserId
       INNER JOIN aspnetdb..aspnet_UsersInRoles AUR
               ON AU.UserId = AUR.UserId
       INNER JOIN aspnetdb..aspnet_Roles AR
               ON AUR.RoleId = AR.RoleId
       INNER JOIN User_ManagementDB..MNT_Users MNTU
               ON AU.UserId = MNTU.aspnet_UsersID
       INNER JOIN User_ManagementDB..MNT_Person MNTP
               ON MNTU.PersonID = MNTP.ID 

そして、これをLINQステートメントに変換しようとする私のコードは次のとおりです。

var _rolesRepo = new RolesRepository();
var _users = LoadAll();// Um_MNT_Users
var _person = entities.People.ToList();// UM_Person
var _role = _rolesRepo.LoadAll(); 

var _userMem = Membership.GetAllUsers()
        .Cast<MembershipUser>()
        .Select(m => m).ToList(); // I dont know if this is the right syntax to get the aspnet_membership.

var _query = from user in _users
             join personID in _person on user.PersonID equals personID.ID 

みんな助けてください。

4

1 に答える 1

1

質問にタグが付けられていないのでEntity Framework、そのロジックを使用してストアドプロシージャを作成し、結果が必要なときにいつでも呼び出すことはできないと思います...

すべてのデータがメモリ内にある場合は、次のクエリを使用できます。

var result = AspMemmership // the collection of data from aspnetdb..aspnet_Membership table
    .Join(AspUsers,        // the collection of data from aspnetdb..aspnet_Users table
        m => m.UserId,
        u => u.UserId,
        (m, u) => u)
    .Join(AspUsersInRoles,
        u => u.UserId,
        ur => ur.UserId,
        (u, ur) => new
        {
            u.UserId,
            u.UserName,
            ur.RoleId
        })
    .Join(AspRoles,
        x => x.RoleId,
        r => r.RoleId,
        (x, r) => new
        {
            x.UserId,
            x.UserName,
            r.RoleName
        })
    .Join(MNT_Users,
        x => x.UserId,
        u => u.aspnet_UsersID,
        (x, u) => new
        {
            x.UserId,
            x.UserName,
            u.PersonId,
            r.RoleName
        })
    .Join(MNT_Persons,
        x => x.PersonId,
        p => p.Id,
        (x, p) => new
        {
            x.UserId,
            x.UserName,
            u.PersonId,
            Name = String.Format("{0},{1} {2}.", 
                p.LastName, p.FirstName, p.MiddleName.Substring(0, 1)),
            r.RoleName
        })
于 2013-01-25T17:21:38.443 に答える