映射一个包含列表的对象以列出 myDto 对象

杰瑞

来自其他应用程序的对象:

我可以得到它:像这样的一个对象:

public MessageSendTMP {get; set;}

包含示例:

public string title {get; set;}
public string Author {get; set;}
public string Date {get; set;}
.....10 more and
public List<Guid> IdPlayers {get; set;}

MessageDto 是一个简单的对象,具有 20 个属性,如数据、作者、姓名、标题等......以及消息所针对的 IDplayer。

在我的应用程序中,我必须将它保存在 message_table 的数据库中。我想使用自动映射器,我将在哪里使用 createMap 中的“ForMember”将 MessageSendTMP 映射到 MessageDto,但我不知道如何。我想在这样保存之前拥有它:List< MessageDto > dataToSave 有这么多记录作为 MessageSendTMP 中的大小 IdPlayers

示例:

MessageSendTMP {
    title = "titleMessage",
    Author = "John",
    Date " "17-04-2021",
    .....
    IdPlayers = [2, 3, 10]
}

我会得到关于大小 2 的 MessageDto 列表:

[0] = { title = "titleMessage", Author = "John", Date " "17-04-2021", ....., IdPlayer = 2},
[1] = { title = "titleMessage", Author = "John", Date " "17-04-2021", ....., IdPlayer = 3},
[2] = { title = "titleMessage", Author = "John", Date " "17-04-2021", ....., IdPlayer = 10}
莫森·埃斯梅尔普尔

使用使用ITypeConverter自定义映射:

public class Message
{
    public string Title { get; set; }

    public string Author { get; set; }

    public string Date { get; set; }

    public List<Guid> IdPlayers { get; set; }
}

public class MessageDto
{
    public string Title { get; set; }

    public string Author { get; set; }

    public string Date { get; set; }

    public Guid IdPlayer { get; set; }
}

public class MessageConverter : ITypeConverter<Message, IEnumerable<MessageDto>>
{
    public IEnumerable<MessageDto> Convert(Message source, IEnumerable<MessageDto> destination, ResolutionContext context)
    {
        foreach (var playerId in source.IdPlayers)
        {
            var msg = context.Mapper.Map<MessageDto>(source);
            msg.IdPlayer = playerId;

            yield return msg;
        }
    }
}

然后:

public class Program
{
    public static void Main(string[] args)
    {
        var config = new MapperConfiguration(options =>
        {
            options.CreateMap<Message, IEnumerable<MessageDto>>(MemberList.Source).ConvertUsing<MessageConverter>();
            options.CreateMap<Message, MessageDto>();
        });

        var mapper = config.CreateMapper();

        var message = new Message
        {
            Author = "auth",
            Date = DateTime.Now.ToString(),
            title = "title",
            IdPlayers = new List<Guid> { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() }
        };

        var result = mapper.Map<Message, IEnumerable<MessageDto>>(message);

    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Linq在selectTableDto中包含List <myDto>?

Typescript接口类型映射到一个对象,该对象包含一个原始对象和一个从原始对象的字段构建的新对象

toString一个包含对象的数组列表

在javascript中获取一个包含列表的对象

列出一个 json 对象

定义一个 bean 的正确方法是什么,该 bean 包含从 Spring 中的映射创建的对象列表

Java-将一个列表中的对象属性映射到另一个对象列表

Automapper如何将一个对象的列表映射到另一个对象的列表

LINQ 查询以创建对象列表,其中每个对象都包含一个列表

如何使用流 lambda 将包含其 Collection 成员的对象列表映射到另一个具有 Set 作为成员的对象?

如何检查一个列表的对象是否包含另一个列表的对象

C#对包含一个对象的另一个列表的对象的列表进行排序

检查对象列表是否包含Java中的另一个对象

为包含可观察属性的对象列表获取一个可观察对象?

我可以访问包含另一个类的对象列表的对象的属性吗

在 JS 中以函数方式映射一个包含一些 promise 的对象

对象组列表创建一个扩展对象列表

将类对象列表映射到另一个列表

Java映射与要列出的对象列表

遍历对象列表的另一个目的我在里面列出

比较两个列表:一个包含对象,另一个包含字符串

导入另一个对象中包含的对象

创建一个包含 json 对象数组的 json 对象

检查对象确实包含一个对象

如何遍历包含子对象的对象列表并创建另一个自定义对象?

Java的8映射为对象的有一个字段列表组合成一个列表

复制一个对象,该对象包含另一个对象的超类

如何检查一个列表的对象是否包含另一列表的任何对象

检查列表是否包含字符串。包含要求一个类对象