将传入数据传输到Automapper中的模型

问题描述 投票:0回答:2

我想在Automapper中做这样的事情。

我想将列表从数据库转移到以下模型。

public class GetListModel
{
    public int RowNumber { get; set; } = 0;
    public object Records { get; set; }
}

即;来自数据库的数据

Name, Surname, Phone, Email, RowNumber

我想从此列表中获取行号,并将其写入“ GetListModel”中的“ RowNumber”。

和。我想将其他数据作为列表写入“记录”。

因此,它应该看起来像这样。

GetListModel{
            int RowNumber = 20,
            object Records = List<User> [
                                            {Name=Ali1,Surname=Kara,[email protected],Phone=05553333333},
                                            {Name=Ali2,Surname=Kara,[email protected],Phone=05553333333},
                                            {Name=Ali3,Surname=Kara,[email protected],Phone=05553333333},
                                            {Name=Ali4,Surname=Kara,[email protected],Phone=05553333333},
                                            {Name=Ali5,Surname=Kara,[email protected],Phone=05553333333},
                                            {Name=Ali6,Surname=Kara,[email protected],Phone=05553333333}
                                            ...
                                        ]
                                        }

请帮助我。

通常,我这样做是为了将列表直接传输到模型。

return new MapperConfiguration(cfg => { cfg.CreateMap<sp_Panel_Get_Orders_Result, OrderModels.For.Panel.ListModel.Order>(); })
.CreateMapper().Map<List<sp_Panel_Get_Orders_Result>, List<OrderModels.For.Panel.ListModel.Order>>(Get);
c# automapper mapper
2个回答
0
投票

我认为您正在寻找这样的东西:

return new MapperConfiguration(cfg => 
{
    cfg.CreateMap<IEnumerable<User>, GetListModel>()
        .ForMember(dest => dest.Records, m => m.MapFrom(dest => dest))
        .ForMember(dest => dest.RowNumber, m => m.MapFrom(dest => dest.Count()));

    // create same mappings for each of your classes such as User
});

那么您就可以像这样映射它:

var users = new List<User>() 
{
    new User { Name = "Ali1" },
    new User { Name = "Ali2" },
    // ...
};

var result = mapper.Map<GetListModel>(users);

尽管可以访问GetListModel,但我建议您将其设为通用,将objectRecords替换为IEnumerable<T>,并使RowNumber成为计算出的只读属性:

public class GetListModel<T>
{
    public int RowNumber => Records.Count();
    public IEnumerable<T> Records { get; set; }
}

映射配置:

return new MapperConfiguration(cfg => 
{
    cfg.CreateMap<IEnumerable<User>, GetListModel<User>>()
        .ForMember(dest => dest.Records, m => m.MapFrom(dest => dest));

    // create same mappings for each of your classes such as User
});

映射是相同的:

var result = mapper.Map<GetListModel<User>>(users);

0
投票

@ Gleb

我想不能。我们不同意。

我需要从第一条记录中获得总价值。

Records.Count()不是。

应该为Records.FirsOrDefault()。RowNumber

采样;

数据库中共有26条记录。

我进行过滤和分页。

收件记录8件。

总页数显示在传入记录中。 (RowNumber)

以这种方式传入的数据模型;

sp_Panel_Get_Products_Result: [
        { RowNumber: 26, ID: 9, Name: "Ali1", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
        { RowNumber: 26, ID: 10, Name: "Ali2", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
        { RowNumber: 26, ID: 11, Name: "Ali3", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
        { RowNumber: 26, ID: 12, Name: "Ali4", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
        { RowNumber: 26, ID: 13, Name: "Ali5", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
        { RowNumber: 26, ID: 14, Name: "Ali6", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
        { RowNumber: 26, ID: 15, Name: "Ali7", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
        { RowNumber: 26, ID: 16, Name: "Ali8", Surname: "Kara", Email: "[email protected]",  Phone: "05553" }
]

我想这样映射;

    GetModels: {
      ListModel: {
        RowNumber_int: 26,
        IEnumerable_T: [
          { ID: 9, Name: "Ali1", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
          { ID: 10, Name: "Ali2", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
          { ID: 11, Name: "Ali3", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
          { ID: 12, Name: "Ali4", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
          { ID: 13, Name: "Ali5", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
          { ID: 14, Name: "Ali6", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
          { ID: 15, Name: "Ali7", Surname: "Kara", Email: "[email protected]",  Phone: "05553" },
          { ID: 16, Name: "Ali8", Surname: "Kara", Email: "[email protected]",  Phone: "05553" }
        ]
      }
    }

我想从第一条记录中获取RowNumber值并将其打印到RowNumber属性。

我想将记录映射到IEnumerable。

:)

(对不起,我使用的是Google翻译为英文。)

© www.soinside.com 2019 - 2024. All rights reserved.