【发布时间】:2020-08-09 20:54:40
【问题描述】:
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);
输出将是:
[
{
"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
但是当一个对象和一个集合对一个集合时,我不知道如何做到这一点。
【问题讨论】:
-
您能否提供一个完整的示例,包括输入以及映射后您期望的输出?很难说
Person和Planet是如何相互关联的。如果PersonView是相关的 -
@devNull 我添加了示例输入和输出。
-
这是什么意思? “我想用 IEnumerable 上的 People Collection 映射 Planet,这可能吗?”。你想在行星类型上拥有一个属性
People吗?或者你想要一本来自 Planet-To-People 的字典吗? -
@Waescher 我想将 PersonView(目标)类型映射到 People 和 Planet 这两种源类型。
标签: c# entity-framework automapper