首页 > 解决方案 > linq C# 语句返回的匿名类型错误

问题描述

我正在尝试将以下 sql 语句转换为 linq c#。我得到的输出是 . 谁能告诉我问题是什么

“System.Linq.Enumerable+WhereSelectEnumerableIterator 2[<>f__AnonymousType02[Argentex.Core.DataAccess.Entities.UserChangeRequestApproval,Argentex.Core.DataAccess.Entities.AuthUser],System.String]”

SQL

BEGIN
        -- Declare the return variable here
        declare @listStr nvarchar(200)

        select
            @listStr = COALESCE(@listStr+',' ,'') + au.UserName
        from 
            UserChangeRequestApproval ra join
            AuthUser au on ra.ApprovedByAuthUserID = au.ID
        where 
            ra.UserChangeRequestID = @UserChangeRequestID
        order by 
            au.UserName asc

        return isnull(@listStr, '')
    END

林克

private string GetApprovedByUserName(int userChangeRequestId, IList<UserChangeRequestApproval> userChangeRequestApproval, IList<AuthUser> authUser)
            {
                return userChangeRequestApproval
                    .Join(authUser, r => r.ApprovedByAuthUserId, au => au.Id, (r, au) => new { r, au })
                    .Where(x => x.r.UserChangeRequestId == userChangeRequestId).Select(x=> x.au.UserName).ToString();
            }

我也试过这个,但它没有用

return userChangeRequestApproval
                .Join(authUser, r => r.ApprovedByAuthUserId, au => au.Id, (r, au) => new { r, au })
                .Where(x => x.r.UserChangeRequestId == userChangeRequestId).Select(x => new AuthUser() { UserName = x.au.UserName}).ToString(); 

 Full code



 var pendingUserChangeRequests = userChangeRequestRepository
                                             .Join(authRepository, r => r.AuthUserId, au => au.Id, (r, au) => new { r, au })
                                             .Join(authApplicationRepository, aau => aau.au.ApplicationId, ap => ap.Id, (aau, ap) => new { aau, ap })
                                             .Join(authRepository, rr => rr.aau.r.ChangedByAuthUserId, rra => rra.Id, (rr, rra) => new { rr, rra })
                                             .Where(x =>  x.rr.aau.r.ChangeStatus == "Pending")
                                             .Select(m => new PendingApprovalUserChangeRequest
                                             {
                                                UserChangeRequestID = m.rr.aau.r.Id,
                                                AuthUserID = m.rr.aau.r.AuthUserId,
                                                AuthUserName = m.rr.aau.au.UserName,
                                                CurrentValue = m.rr.aau.r.CurrentValue,
                                                ProposedValue = m.rr.aau.r.ProposedValue,
                                                ChangeValueType = m.rr.aau.r.ChangeValueType,
                                                ChangeDateTime = m.rr.aau.r.ChangeDateTime,
                                                ChangedByAuthUserID = m.rr.aau.r.ChangedByAuthUserId,
                                                ChangedByAuthUserName = m.rr.aau.r.ChangedByAuthUser.UserName,
                                                ChangeStatus = m.rr.aau.r.ChangeStatus,
                                                AuthApplicationDescription = m.rr.ap.Description,
                                                ApprovalsRequired = m.rr.ap.Description == "ArgentexClient" ? internalApprovalsRequired : externalApprovalsRequired,
                                                ApprovedBy = GetApprovedByUserName(m.rr.aau.r.Id, userChangeRequestApprovalRepository, authRepository)
                                             }).ToList();


    Output


      [
    {
        "userChangeRequestID": 48,
        "authUserID": 1411,
        "authUserName": "rmenon17",
        "forename": "test",
        "surname": "Menon",
        "company": "ArgentexClient",
        "authApplicationDescription": "ArgentexClient",
        "currentValue": "rmenon17@synetec.co.uk",
        "proposedValue": "rmenon171@synetec.co.uk",
        "changeValueType": "Email",
        "changeDateTime": "2019-11-05T16:42:50.363",
        "changedByAuthUserID": 1352,
        "changedByAuthUserName": "UserManagerTest",
        "changeStatus": "Pending",
        "approvalsRequired": 2,
        "approvedBy": "System.Linq.Enumerable+WhereSelectEnumerableIterator`2[<>f__AnonymousType0`2[Argentex.Core.DataAccess.Entities.UserChangeRequestApproval,Argentex.Core.DataAccess.Entities.AuthUser],System.String]"
    }
    ]

标签: c#linq

解决方案


推荐阅读