我可以使用 AutoMapper 将一个 int 映射到 objects 的列表吗?
Can I use AutoMapper to Map one int to a list of objects?
public class Person {
public string Name { get; set; }
public int Age { get; set; }
}
public class Planet {
public int Id { get; set; }
public string Name { get; set; }
}
public class PersonView {
public string Name { get; set; }
public int Age { get; set; }
public int PlanetId { get; set; }
我有 Collection 人:
IEnumerable<Person> people = new IEnumerable<Person>();
还有一颗行星:
Planet ours = new Planet(){
Id=1,
Name="Earth"
}
输入为:
[
{
"Name": "George",
"Age": 21
},
{
"Name": "Lisa",
"Age": 24
},
{
"Name": "George",
"Age": 18
}
]
和
{
"Id":1,
"Name":"Earth"
}
映射如下:
IEnumerable<PersonView> people =
mapper.Map<Person, PersonView>(people)
.Map<Planet, PersonView>(people);
输出为:
[
{
"Name": "George",
"Age": 21,
"PlanetId": 1
},
{
"Name": "Lisa",
"Age": 24,
"PlanetId": 1
},
{
"Name": "George",
"Age": 18,
"PlanetId": 1
}
]
我想将 PersonView(目标)类型映射到 People 和 Planet 这两个源类型,这可能吗?
我知道如何将两个来源映射到一个目的地 --> Automapper - Multi object source and one destination
但是我不知道当有一个 object 和一个 Collection 对一个 Collection 时我该如何做到这一点。
您可能必须进行多次映射才能使其与您当前的 class 结构一起使用。您可以先将 people
映射到 PersonView
的集合。然后将 Planet
映射到每个 PersonView
结果中。例如:
IEnumerable<Person> persons = ...
Planet planet = ...
IEnumerable<PersonView> personViews =
mapper.Map<IEnumerable<PersonView>>(persons)
.Select(v => mapper.Map<Planet, PersonView>(planet, v));
public class Person {
public string Name { get; set; }
public int Age { get; set; }
}
public class Planet {
public int Id { get; set; }
public string Name { get; set; }
}
public class PersonView {
public string Name { get; set; }
public int Age { get; set; }
public int PlanetId { get; set; }
我有 Collection 人:
IEnumerable<Person> people = new IEnumerable<Person>();
还有一颗行星:
Planet ours = new Planet(){
Id=1,
Name="Earth"
}
输入为:
[
{
"Name": "George",
"Age": 21
},
{
"Name": "Lisa",
"Age": 24
},
{
"Name": "George",
"Age": 18
}
]
和
{
"Id":1,
"Name":"Earth"
}
映射如下:
IEnumerable<PersonView> people =
mapper.Map<Person, PersonView>(people)
.Map<Planet, PersonView>(people);
输出为:
[
{
"Name": "George",
"Age": 21,
"PlanetId": 1
},
{
"Name": "Lisa",
"Age": 24,
"PlanetId": 1
},
{
"Name": "George",
"Age": 18,
"PlanetId": 1
}
]
我想将 PersonView(目标)类型映射到 People 和 Planet 这两个源类型,这可能吗?
我知道如何将两个来源映射到一个目的地 --> Automapper - Multi object source and one destination
但是我不知道当有一个 object 和一个 Collection 对一个 Collection 时我该如何做到这一点。
您可能必须进行多次映射才能使其与您当前的 class 结构一起使用。您可以先将 people
映射到 PersonView
的集合。然后将 Planet
映射到每个 PersonView
结果中。例如:
IEnumerable<Person> persons = ...
Planet planet = ...
IEnumerable<PersonView> personViews =
mapper.Map<IEnumerable<PersonView>>(persons)
.Select(v => mapper.Map<Planet, PersonView>(planet, v));