我如何 Mapper.Map 进行 IGrouping

How do I Mapper.Map for IGrouping

我在使用 AutoMapper 时遇到问题

我的代码:

public static IQueryable<IGrouping<Int64, GroupTimeSheetViewModel>> ToListGroupViewModel(this IQueryable<IGrouping<Int64, GroupTimeSheet>> entity)
    {
        return Mapper.Map<IQueryable<IGrouping<Int64, GroupTimeSheet>>, IQueryable<IGrouping<Int64, GroupTimeSheetViewModel>>>(entity);
    }

当我运行我的代码时,出现错误:

The value "System.Collections.Generic.List1[PG.Admin.Models.TimeSheetHeaders.GroupTimeSheetViewModel]" is not of type "System.Linq.IGrouping2[System.Int64,PG.Admin.Models.TimeSheetHeaders.GroupTimeSheetViewModel]" and cannot be used in this generic collection. Parameter name: value

AutoMapper 无法直接映射可查询对象。如果我是你,我会使用 AutoMapper's LINQ projection capabilities。它使用 LINQ 构建 Select 投影。这样,您得到的 LINQ 将类似于:

dbContext.GroupTimeSheets
   .GroupBy(ts => ts.Something)
   .Project().To<GroupTimeSheetViewModel>()
   .ToListAsync();