Automapper - 将字符串列表映射到具有字符串 属性 的对象列表
Automapper - Map list of string to list of object with string property
我在使用 automapper
时遇到问题
这里我有两个对象:
对象 1:
public class First
{
......
public IList<string> ImportantList{ get; set; }
......
}
对象 2:
public class Second
{
.....
public IList<ImportantListClass> ImportantList{ get; set; }
.....
}
class:
public class ImportantListClass
{
public string Name{ get; set; }
}
我尝试使用自动映射器将第一个对象映射到第二个对象,但我的目标 ImportantList 为空。我在目标 class 中有相同数量的对象,但名称 属性 为空。
我试试:
CreateMap<Second, First>()
.ForMember(z => z.ImportantList, map => map.MapFrom(z =>
z.ImportantList.Select(x => x.Name).ToList()))
.ReverseMap();
但这并没有改变什么 他们有更好的方法来做到这一点吗
@编辑
我添加这个:
CreateMap<First, Second>();
CreateMap<ImportantListClass, string>()
.ConvertUsing(source => source.Name);
CreateMap<string, ImportantListClass>()
.ForMember(z => z.Name, z=> z.MapFrom(d => d));
感谢帮助!
您需要使用 ConvertUsing
并添加一张从 ImportantListClass
到 string
的地图:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Second, First>();
cfg.CreateMap<ImportantListClass, string>()
.ConvertUsing(source => source.Name);
});
var mapper = config.CreateMapper();
var second = new Second
{
Id = 22,
ImportantList = new List<ImportantListClass>
{
new ImportantListClass { Name = "Name1" },
new ImportantListClass { Name = "Name2" }
}
};
var first = mapper.Map<First>(second);
我在使用 automapper
时遇到问题这里我有两个对象:
对象 1:
public class First
{
......
public IList<string> ImportantList{ get; set; }
......
}
对象 2:
public class Second
{
.....
public IList<ImportantListClass> ImportantList{ get; set; }
.....
}
class:
public class ImportantListClass
{
public string Name{ get; set; }
}
我尝试使用自动映射器将第一个对象映射到第二个对象,但我的目标 ImportantList 为空。我在目标 class 中有相同数量的对象,但名称 属性 为空。
我试试:
CreateMap<Second, First>()
.ForMember(z => z.ImportantList, map => map.MapFrom(z =>
z.ImportantList.Select(x => x.Name).ToList()))
.ReverseMap();
但这并没有改变什么 他们有更好的方法来做到这一点吗
@编辑
我添加这个:
CreateMap<First, Second>();
CreateMap<ImportantListClass, string>()
.ConvertUsing(source => source.Name);
CreateMap<string, ImportantListClass>()
.ForMember(z => z.Name, z=> z.MapFrom(d => d));
感谢帮助!
您需要使用 ConvertUsing
并添加一张从 ImportantListClass
到 string
的地图:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Second, First>();
cfg.CreateMap<ImportantListClass, string>()
.ConvertUsing(source => source.Name);
});
var mapper = config.CreateMapper();
var second = new Second
{
Id = 22,
ImportantList = new List<ImportantListClass>
{
new ImportantListClass { Name = "Name1" },
new ImportantListClass { Name = "Name2" }
}
};
var first = mapper.Map<First>(second);