首页 > 解决方案 > C# AutoMapper,如何映射组计数

问题描述

我的模型:

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

我一直在尝试使用自动映射器来实现这一点。但我不确定如何配置我的映射器。有任何想法吗?

标签: c#automapper

解决方案


仅仅因为您要返回 a 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();

推荐阅读