具有配置文件的 Linq 成员

Linq members with profiles

我正在尝试进行 linq 查询以提取成员资格中的所有用户及其个人资料。这是我已经得到的:

    Dim Mbrs = Membership.GetAllUsers

    Dim Pros = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All)

    Dim q = From mem In Mbrs Join pro In Pros On mem.UserName Equals
        pro.UserName Select mem.email, mem.username, mem.islockedout,
        pro.FirstName, pro.lastname, pro.city, pro.state, pro.zip, pro.type

如果我从 select 中删除配置文件内容,它至少会拉出一个成员列表。我做错了什么??

像这样制作Class

Imports Microsoft.VisualBasic

Public Class Mems
Public Property FirstName As String = ""
Public Property LastName As String = ""
Public Property Address1 As String = ""
Public Property Address2 As String = ""
Public Property City As String = ""
Public Property State As System.Int32 = "0"
Public Property Zip As String = ""
Public Property Title As String = ""
Public Property Phone As System.Decimal = "0"
Public Property Id As System.Int32 = "0"
Public Property UserType As System.Int32 = "0"
Public Property SSN As System.Int32 = "0"
Public Property Email As String = ""
Public Property UserName As String = ""
Public Property IsLockedOut As Boolean = False

Private Loaded As Boolean = False
Public Sub New(usr As String)
    GetMem(usr)
End Sub
Public Sub New()

End Sub
Public Sub Save()
    If Not Loaded Then Throw New Exception("No User Loaded")
    Dim mm = Membership.GetUser(UserName)
    mm.Email = Email
    Membership.UpdateUser(mm)

    Dim p As ProfileCommon = New ProfileCommon
    Dim pp = p.GetProfile(UserName)
    pp.Address1 = Address1
    pp.Address2 = Address2
    pp.City = City
    pp.FirstName = FirstName
    pp.Id = Id
    pp.LastName = LastName
    pp.Phone = Phone
    pp.SSN = SSN
    pp.State = State
    pp.Title = Title
    pp.UserType = UserType
    pp.Zip = Zip
    pp.Save()


End Sub

Public Sub GetMem(usr As String)
    'Try
    If usr.Length = 0 Then
        FirstName = "SYSTEM"
    Else


        Dim mm = Membership.GetUser(usr)
        Email = mm.Email
        IsLockedOut = mm.IsLockedOut

        Dim p As ProfileCommon = New ProfileCommon
        Dim pp = p.GetProfile(usr)
        Address1 = pp.Address1
        Address2 = pp.Address2
        City = pp.City
        FirstName = pp.FirstName
        Id = pp.Id
        LastName = pp.LastName
        Phone = pp.Phone
        SSN = pp.SSN
        State = pp.State
        Title = pp.Title
        UserType = pp.UserType
        Zip = pp.Zip

        UserName = usr
        Loaded = True
        'Catch ex As Exception

        ' End Try
    End If

End Sub
Public Function ChangeUsername(uTo As String) As Integer
    If Loaded Then
        Return ChangeUsername(UserName, uTo)
    Else
        Throw New Exception("No User Loaded")
    End If
End Function
Public Function ChangeUsername(uFrom As String, uTo As String) As Integer

    If Membership.FindUsersByName(uFrom).Count = 0 Then
        Throw New Exception("Original UserName Don't Exists")
    ElseIf Membership.FindUsersByName(uTo).Count = 1 Then
        Throw New Exception("Target UserName Don't Exists")
    Else
        Dim myDb As New MyDbDataContext
        Dim q = (From u In myDb.aspnet_Users Where u.UserName = uFrom And u.ApplicationId.Equals("72e4b882-e471-4f4b-b161-af0abbcb8487") Select u).Single

        q.UserName = uTo
        q.LoweredUserName = uTo.ToLower
        Try
            myDb.SubmitChanges()
            Return 1
        Catch ex As Exception
            Return 0

        End Try
    End If

End Function

End Class

然后你可以从这样的函数中调用它

    Public Shared Function GetMems() As List(Of Mems)
    GetMems = New List(Of Mems)
    Dim mm = Membership.GetAllUsers

    For Each mbr As MembershipUser In mm
        GetMems.Add(New Mems(mbr.UserName))
    Next

    Return GetMems
End Function