我想在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);
我认为您正在寻找这样的东西:
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
,但我建议您将其设为通用,将object
的Records
替换为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);
@ 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翻译为英文。)