Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用linq加入aspnet_会员和aspnet_用户?_C#_Linq_Join - Fatal编程技术网

C# 如何使用linq加入aspnet_会员和aspnet_用户?

C# 如何使用linq加入aspnet_会员和aspnet_用户?,c#,linq,join,C#,Linq,Join,我很难想出如何使用LINQ连接aspnet表。 这是我的询问 如何连接这些aspnet表,或者如何使用LINQ/MVC 3获取这些aspnet表的确切列名或数据。aspnet_成员资格、aspnet_用户、aspnet_用户角色和aspnet_角色 一旦我得到这些值或它们的列名,我将把它们连接到不同数据库中的另外两个表中 下面是我在sqlserver中的代码,我想将其转换为LINQ语句 SELECT AU.UserId, AU.UserName, ( MNTP.Las

我很难想出如何使用LINQ连接aspnet表。 这是我的询问

如何连接这些aspnet表,或者如何使用LINQ/MVC 3获取这些aspnet表的确切列名或数据。aspnet_成员资格、aspnet_用户、aspnet_用户角色和aspnet_角色

一旦我得到这些值或它们的列名,我将把它们连接到不同数据库中的另外两个表中

下面是我在sqlserver中的代码,我想将其转换为LINQ语句

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 
var\u rolesRepo=new RolesRepository();
var _users=LoadAll();//嗯,嗯,嗯,用户
var _person=entities.People.ToList();//嗯!
var _role=_rolesRepo.LoadAll();
var_userMem=Membership.GetAllUsers()
.Cast()
.Select(m=>m).ToList();//我不知道这是否是获得aspnet_成员资格的正确语法。
var\u query=来自用户中的用户
在user.personID等于personID.ID上的人中加入personID

伙计们,请帮帮我。

因为我看不到问题被标记为
实体框架
,所以我假设您无法使用该逻辑创建存储过程,并在需要结果时调用它

如果所有数据都在内存中,则可以使用此查询:

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

伙计们,请帮帮我(哦,非常感谢@RePierre.:)我还有最后一个问题,我如何分别获得Aspnet_会员和Aspnet_用户的名单?还有aspnet_用户角色,谢谢@用户1395586,若您有权访问数据库,您只需从数据库加载它们,就像您对
MNT\u Persons
所做的一样。否则,您可以使用
MembershipProvider的
GetAllUsers
方法,该方法适用于aspnet\u会员和aspnet\u用户,还是仅适用于aspnet\u会员?@Janmael
GetAllUsers
适用于
aspnet\u用户
。有关角色,请参阅
RoleProvider
ohh这是一个很大的帮助!这是aspnet_会员的代码吗?Membership.GetAllUsers().Cast().Select(m=>m.ToList()?你认为这是加入我的MNT_用户的正确方式吗?user.aspnet\u UsersID等于name.ProviderUserKey??非常感谢您抽出时间!你帮了大忙!的确