C # AutoMapper, как сопоставить количество групп - PullRequest
0 голосов
/ 16 мая 2018

Моя модель:

public class StatusDetailsViewModel
{
    public string Status { get; set; }
    public long CountNo { get; set; }
}

И моя функция для получения данных:

public List<StatusDetailsViewModel> CheckMeetingStatus(long actionId)
{
     List<StatusDetailsViewModel> statusDetails;

     var statuses = _igniteDb.myTable.Where(a => a.actionId == actionId)
                .GroupBy(a => new { a.Status, a.ElectionGroup }).GroupBy(c => new { c.Key.Status})
                .Select(b => new { Status = b.Key.Status, CountNo = b.Count()}).ToList();

     //How to Map statuses to statusDetails??

     return statusDetails;
}

Я пытаюсь использовать auto mapper для достижения этой цели. Но я не уверен, как настроить мой картограф. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Почему вы должны отобразить в вашем коде. Вместо создания анонимного типа вы можете создать объект StatusDetailsViewModel. Измените оператор выбора как Select(b => new StatusDetailsViewModel() { Status = b.Key.Status, CountNo = b.Count()}

Если вы хотите использовать AutoMapper , вам следует определить тип источника и цели при определении карты / профиля. Вы не можете сопоставить анонимный тип с AutoMapper.

Ваш код для создания объекта StatusDetailsViewModel (без использования Automapper, поскольку вам не требуется запрашиваемый код)

public List<StatusDetailsViewModel> CheckMeetingStatus(long actionId)
{
     List<StatusDetailsViewModel> statusDetails;

     var statuses = _igniteDb.myTable.Where(a => a.actionId == actionId)
                .GroupBy(a => new { a.Status, a.ElectionGroup }).GroupBy(c => new { c.Key.Status})
                .Select(b => new StatusDetailsViewModel () { Status = b.Key.Status, CountNo = b.Count()}).ToList();

     //How to Map statuses to statusDetails??

     return statusDetails;
}
0 голосов
/ 16 мая 2018

Просто потому, что вы возвращаете List<StatusDetailsViewModel>, вам не нужен AutoMapper, просто проецируйте ваши данные, используя непосредственно модель представления, как показано ниже:

List<StatusDetailsViewModel> statusDetails = _igniteDb.myTable.Where(a => a.actionId == actionId)
     .GroupBy(a => new { a.Status, a.ElectionGroup })
     .GroupBy(c => new { c.Key.Status})
     .Select(b => new StatusDetailsViewModel { /* <--- Here you instantiate your view model */
          Status = b.Key.Status, 
          CountNo = b.Count()}
     ).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...