簡體   English   中英

我可以使用 AutoMapper 到 Map 一個整數到對象列表嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM