Как добавить значения объекта в viewmodel с помощью List <object> - PullRequest
0 голосов
/ 31 мая 2019

enter image description here У меня есть модель представления, и я пытаюсь вернуть объект linq, я не уверен, как добавить объект списка в запросе возврата linq.Я приложил образец кода для лучшего понимания.

Просмотр модели:

public class BusinessAnalysisViewModel
{
    public Guid UserGuid { get; set; }
    public List<BAQandR> QuestionResponseIds { get; set; }
    public DateTime? CreateDate { get; set; }
    public DateTime UpdateDate { get; set; }
}
public class BAQandR
{
    public int BAQuestionId { get; set; }
    public string BAResponse { get; set; }
    public int? BAFinPreviousYr { get; set; }
    public int? BAFinCurrentYr { get; set; }
}

Запрос Linq:

public BusinessAnalysisViewModel GetBusinessAnalysisInfo(Guid userID)
    {
        using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
        {
            var model = (from ba in ctxAdmin.Business_Analysis
                         where ba.User_Guid == userID
                         select new BusinessAnalysisViewModel
                         {
                             UserGuid = ba.User_Guid,
                             CreateDate = ba.CreateDate,
                             UpdateDate = ba.UpdateDate,

                             QuestionResponseIds =
                         });
            return model;
        }
    }

[! [Введите описание изображения здесь] [2]] [2]

[! [Введите описание изображения здесь] [2]] [2]

Я ожидаю, что следующий тип json будет результатом моей логики.

{
  "UserGuid": "000000000-4D3B-4598-A1FC-6B7B1D6D99D2",
  "CreateDate": "2019-05-22T18:52:14.458Z",
  "UpdateDate": "2019-05-22T18:52:14.458Z",
  "QuestionResponseIds": [
    {
      "BAQuestionId": 1,
      "BAResponse": 1,
      "BAFinPreviousYr": "",
      "BAFinPreviousYr": ""
    },
    {
      "BAQuestionId": 1,
      "BAResponse": 1,
      "BAFinPreviousYr": "",
      "BAFinPreviousYr": ""
    },
    {
      "BAQuestionId": 1,
      "BAResponse": 1,
      "BAFinPreviousYr": "",
      "BAFinPreviousYr": ""
    },
    {
      "BAQuestionId": 1,
      "BAResponse": 1,
      "BAFinPreviousYr": "",
      "BAFinPreviousYr": ""
    }
  ]  
}

Я изменил модель, как показано ниже,

public class UserBusinessAnalysis
{
    public Guid UserGuid { get; set; }
    public DateTime? CreateDate { get; set; }
    public DateTime UpdateDate { get; set; }
    public int BAQuestionId { get; set; }
    public string BAResponse { get; set; }
    public int? BAFinPreviousYr { get; set; }
    public int? BAFinCurrentYr { get; set; }        
}

Linq, как показано ниже,

public List<UserBusinessAnalysis> GetBusinessAnalysisInfoByUserId(Guid userID)
    {
        using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
        {
            var model = (from ba in ctxAdmin.Business_Analysis
                         where ba.User_Guid == userID
                         select new UserBusinessAnalysis
                         {
                             UserGuid = ba.User_Guid,
                             CreateDate = ba.CreateDate,
                             UpdateDate = ba.UpdateDate,
                             BAQuestionId = ba.B_Analysis_Question_id,
                             BAResponse = ba.B_Analysis_Response,
                             BAFinPreviousYr = ba.Fin_Review_Previous_Year,
                             BAFinCurrentYr = ba.Fin_Review_Current_Year
                         }).ToList();
            return model;
        }
    }

1 Ответ

0 голосов
/ 31 мая 2019

Вы можете просто добавить свой список свойств к результату

using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
{
    var model = (from ba in ctxAdmin.Business_Analysis
                 where ba.User_Guid == userID
                 select new BusinessAnalysisViewModel
                 {
                     UserGuid = ba.User_Guid,
                     CreateDate = ba.CreateDate,
                     UpdateDate = ba.UpdateDate,

                     QuestionResponseIds = ba.QuestionResponseIds
                 });
    return model;
}

Если ваши типы не совпадают, вам нужно будет сделать еще один прогноз

using (var ctxAdmin = new MemberDataContext(ConfigurationManager.ConnectionStrings[Constants.CONFIG_KEY_MEMBER_CONNECTION_STRING].ToString()))
{
    var model = (from ba in ctxAdmin.Business_Analysis
                 where ba.User_Guid == userID
                 select new BusinessAnalysisViewModel
                 {
                     UserGuid = ba.User_Guid,
                     CreateDate = ba.CreateDate,
                     UpdateDate = ba.UpdateDate,

                     QuestionResponseIds = ba.QuestionResponseIds.Select(r => new BAQandR { /* copy fields here */ }).ToList()
                 });
    return model;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...