[英]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; }
我有一個人的集合:
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);
Output 將是:
[
{
"Name": "George",
"Age": 21,
"PlanetId": 1
},
{
"Name": "Lisa",
"Age": 24,
"PlanetId": 1
},
{
"Name": "George",
"Age": 18,
"PlanetId": 1
}
]
我想 map 具有 People 和 Planet 兩種源類型的 PersonView(目標)類型,這可能嗎?
我知道如何將 Map 兩個來源連接到一個目的地 --> Automapper - 多 object 來源和一個目的地
但是當有一個 object 和一個集合到一個集合時,我不知道我該怎么做。
您可能需要進行多次映射才能使用當前的 class 結構。 您可以先將PersonView
people
添加到 PersonView 的集合中。 然后將 map 這個Planet
放入每個PersonView
的結果中。 例如:
IEnumerable<Person> persons = ...
Planet planet = ...
IEnumerable<PersonView> personViews =
mapper.Map<IEnumerable<PersonView>>(persons)
.Select(v => mapper.Map<Planet, PersonView>(planet, v));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.