我如何 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.IGrouping
2[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();
我在使用 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.List
1[PG.Admin.Models.TimeSheetHeaders.GroupTimeSheetViewModel]" is not of type "System.Linq.IGrouping
2[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();