AutoMapper:当源集合中不存在嵌套集合属性的目标值时,保留其目标值
创始人
2024-09-23 16:31:48
0

使用AutoMapper可以将一个对象映射到另一个对象。在目标对象中,如果存在嵌套集合属性,我们可能希望在源集合中没有对应的属性时,保留其目标值。例如,可以如下定义两个类:

public class Order
{
    public int Id { get; set; }
    public List OrderItems { get; set; }
}

public class OrderItem
{
    public int Id { get; set; }
    public int OrderId { get; set; }
    public string ProductName { get; set; }
    public decimal Price { get; set; }
}

现在,我们有一个源对象和一个目标对象:

var sourceOrder = new Order
{
    Id = 1,
    OrderItems = new List
    {
        new OrderItem { Id = 1, ProductName = "Product 1", Price = 10 },
        new OrderItem { Id = 2, ProductName = "Product 2", Price = 20 }
    }
};

var targetOrder = new Order
{
    Id = 2,
    OrderItems = new List
    {
        new OrderItem { Id = 1, ProductName = "Product 1", Price = 10 },
        new OrderItem { Id = 3, ProductName = "Product 3", Price = 30 }
    }
};

我们希望将源对象的值映射到目标对象,以保留目标对象中不存在的OrderItem项。我们可以使用以下代码实现:

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap()
        .ForMember(dest => dest.OrderItems,
            opt => opt.MapFrom(src =>
                src.OrderItems.UnionBy(targetOrder.OrderItems,
                    item => item.Id,
                    item => item.Id,
                    (s, t) => s)));
});

var mapper = new Mapper(config);

mapper.Map(sourceOrder, targetOrder);

这里,我们使用了AutoMapper的UnionBy方法,该方法用于将源集合与目标集合进行合并,并返回合并后的新集合。在此示例中,我们将源OrderItems集合和目标OrderItems集合按照每个OrderItem的Id进行匹配,并合并它们。

现在,如果我们检查目标对象,我们会发现它与源对象的值相同,同时保

相关内容

热门资讯

终于知道!微信微乐自建房辅助工... 终于知道!微信微乐自建房辅助工具,微乐自建房脚本免费入口(开挂自建房)软件微信微乐自建房辅助工具辅助...
科技分享!微乐自建房辅助工具脚... 科技分享!微乐自建房辅助工具脚本,微乐家乡麻将自建房辅助app(开挂自建房)脚本微乐家乡麻将自建房辅...
普及知识!微信雀神麻将挂件开挂... 普及知识!微信雀神麻将挂件开挂辅助,微乐自建房脚本免费入口(开挂自建房)插件1、操作简单,无需微信雀...
一分钟揭秘!微乐家乡麻将自建房... 一分钟揭秘!微乐家乡麻将自建房辅助app,微乐自建房脚本免费入口(开挂自建房)脚本1、打开软件启动之...
热门推荐!微乐家乡麻将自建房辅... 热门推荐!微乐家乡麻将自建房辅助app,微乐家乡麻将自建房辅助app(开挂自建房)攻略1、微乐家乡麻...
发现一款!微乐自建房辅助工具,... 发现一款!微乐自建房辅助工具,微乐小程序免费黑科技(开挂自建房)软件1、全新机制【微乐自建房辅助工具...
揭秘一下!微乐家乡麻将自建房辅... 揭秘一下!微乐家乡麻将自建房辅助app,微乐自建房脚本免费入口(开挂自建房)攻略在进入微乐家乡麻将自...
分享给玩家!微乐自建房辅助工具... 分享给玩家!微乐自建房辅助工具挂,微乐小程序免费黑科技(开挂自建房)教程1、下载好微乐自建房辅助工具...
实测揭晓!微乐家乡麻将自建房辅... 实测揭晓!微乐家乡麻将自建房辅助app,微乐家乡麻将自建房辅助app(开挂自建房)插件1、进入游戏-...
终于知道!微信卡五星辅助器,微... 终于知道!微信卡五星辅助器,微乐小程序免费黑科技(开挂自建房)插件1、完成微信卡五星辅助器有辅助插件...