用条件计算子对象

时间:2013-07-16 07:31:15

标签: automapper

我有一个有两个班级的项目

在公司课程中,我有一个子对象InsuredCount 我想用一个条件填充InsuredCount,如下所示:

Mapper.CreateMap().ForMember(covm => covm.InsuredCount, co => co.MapFrom(x => x.Personnel.Count(y => y.InsuredStatus != InsuredStatus.NotCovered)))

public class Company : BusinessUnit
{
public DateTime RegisterDate { get; set; }
public string RegisterPlace { get; set; }
public virtual ICollection Personnel { get; set; }
}

这很有用!

但是当我用miniprofiler检查它时,它会执行每个公司人员的查询

我只是希望PersonnelCount有条件,我想用一个查询执行此操作

请建议我如何做到这一点

1 个答案:

答案 0 :(得分:0)

您可以忽略InsuredCount的映射,并使用AfterMap执行查询并设置属性。

修改(来自评论):

或者,由于您尝试执行的映射是在IQueryable上,请尝试使用Queryable Extensions中的Project().To<>

Project().To有局限性,因此如果它不适合您,那么下一个最好的方法就是在您在评论中显示时实现查询而不使用AutoMapper。如果是这种情况(您在Project().To中遇到限制),请提交bug,以便进行改进。