使用automapper在动态列表和类列表之间进行字段到字段的映射 [英] Field to field mapping between list of dynamic and list of class with automapper
问题描述
我有一个bellow函数,它返回一个动态对象列表
public 列表< dynamic> getlist()
{
List< dynamic> d = new 列表< dynamic>();
d.Add( new {Name = A,Age = 12 });
d.Add( new {Name = B,年龄= 10 });
d.Add( new {Name = C,年龄= 15 });
d.Add( new {Name = D,年龄= 18 });
d.Add( new {Name = E,年龄= 17 });
return d;
}
并且还有一个班级
public class testclass
{
public string letter { get ; set ; }
public Int64 频率{ get 跨度>; set ; }
}
我使用AutoMapper.5.2.0。我想将动态列表映射到**列表testclass ** class。
有人能举例说明怎么做?
我试过的:
................................. .............................
假设你想要一个从一种类型到另一种类型的直接映射,这样的事情应该有效:
static void CreateDynamicTestClassMap(IMapperConfigurationExpression配置)
{
var dynamicObject = new { Name = default(string),Age = default(int)};
var map = configuration.CreateMap(dynamicObject.GetType(),typeof(testclass));
map.ForMember(nameof(testclass.letter),o => o.MapFrom(nameof(dynamicObject.Name)));
map.ForMember(nameof(testclass.frequency),o => o.MapFrom(nameof(dynamicObject.Age)));
}
...
var config = new MapperConfiguration(CreateDynamicTestClassMap);
config.AssertConfigurationIsValid();
var mapper = config.CreateMapper();
var listOfTestClass = GetList()。选择(mapper.Map< testclass>)。ToList();
注意:CreateDynamicTestClassMap
方法需要与GetList
方法在同一个程序集中,否则两个动态类型将不匹配。
I have bellow function which returns a list of dynamic object
public List<dynamic> getlist()
{
List<dynamic> d = new List<dynamic>();
d.Add(new { Name = "A", Age = 12 });
d.Add(new { Name = "B", Age = 10 });
d.Add(new { Name = "C", Age = 15 });
d.Add(new { Name = "D", Age = 18 });
d.Add(new { Name = "E", Age = 17 });
return d;
}
and also have a class
public class testclass
{
public string letter { get; set; }
public Int64 frequency { get; set; }
}
I use AutoMapper.5.2.0 .I want to map the dynamic list with the list of **testclass** class .
can anybody give an example how to do this?
What I have tried:
..............................................................
Assuming you want a direct mapping from one type to the other, something like this should work:
static void CreateDynamicTestClassMap(IMapperConfigurationExpression configuration) { var dynamicObject = new { Name = default(string), Age = default(int) }; var map = configuration.CreateMap(dynamicObject.GetType(), typeof(testclass)); map.ForMember(nameof(testclass.letter), o => o.MapFrom(nameof(dynamicObject.Name))); map.ForMember(nameof(testclass.frequency), o => o.MapFrom(nameof(dynamicObject.Age))); } ... var config = new MapperConfiguration(CreateDynamicTestClassMap); config.AssertConfigurationIsValid(); var mapper = config.CreateMapper(); var listOfTestClass = GetList().Select(mapper.Map<testclass>).ToList();
NB: TheCreateDynamicTestClassMap
method will need to be in the same assembly as yourGetList
method, otherwise the two dynamic types will not match.
这篇关于使用automapper在动态列表和类列表之间进行字段到字段的映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!