Expression
一、安装扩展包
如果需要进行表达式目录树从一个对象转换为其他对象,需要安装另外的独立的包。
- 使用Package Manager安装
Install-Package AutoMapper.Extensions.ExpressionMapping -Version 4.1.2
- 使用NuGet安装
搜索AutoMapper.Extensions.ExpressionMapping
安装最新版本即可
- 使用.Net CLI安装
dotnet add package AutoMapper.Extensions.ExpressionMapping --version 4.1.2
二、表达式目录树转换方法一
public class OrderLine
{
public int Id { get; set; }
public int OrderId { get; set; }
public Item Item { get; set; }
public decimal Quantity { get; set; }
}
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
}
public class OrderLineDTO
{
public int Id { get; set; }
public int OrderId { get; set; }
public string Item { get; set; }
public decimal Quantity { get; set; }
}
var configuration = new MapperConfiguration(cfg =>
{
cfg.AddExpressionMapping();
cfg.CreateMap<OrderLine, OrderLineDTO>()
.ForMember(dto => dto.Item, conf => conf.MapFrom(ol => ol.Item.Name));
cfg.CreateMap<OrderLineDTO, OrderLine>()
.ForMember(ol => ol.Item, conf => conf.MapFrom(dto => dto));
cfg.CreateMap<OrderLineDTO, Item>()
.ForMember(i => i.Name, conf => conf.MapFrom(dto => dto.Item));
});
三、表达式目录树转换方法二
使用MapExpression对表达式目录树进行转换
Expression<Func<GarageModel, bool>> filter = m => m.Color == garage.Color;
var mappedfilter = mapper.MapExpression<Expression<Func<Garage, bool>>>(filter);