Я работаю в проекте, который использует AutoMapper для сопоставления наших POCO ORM (Object-Relational Mapper) (Plain Old CLR Objects) с моделями представления, которые мы представляем в пользовательском интерфейсе.
У меня есть экземпляр, в котором это включает в себя агрегирование записей.
POCO, который является нашим входом:
public class WorkRecord
{
public int id {get; set; }
public string work { get; set; }
public string type { get; set; }
public string result { get; set; }
}
И что мы хотим в качестве вывода:
public class WorkViewModel
{
public string Work { get; set; }
public List<WorkInstance> WorkInstances { get; set; }
public class WorkInstance
{
public string Type { get; set; }
public string Result { get; set; }
}
}
Что я хочу преобразовать список WorkRecords в список WorkViewModels, где количество выходных данных WorkViewModels не совпадает с количеством WorkRecords.
Я хочу один WorkViewModel для каждого отдельного WorkRecord.work с дочерним элементом WorkViewModel.WorkInstance, созданный для каждого WorkRecord с этим WorkRecord.work.
Например:
[
{id: 1, work: "WorkA", type: "Type1", result: "Success"},
{id: 2, work: "WorkA", type: "Type2", result: "Failure"},
{id: 3, work: "WorkB", type: "Type3", result: "Success"},
{id: 4, work: "WorkB", type: "Type4", result: "Failure"},
]
Должно привести к:
[
{
Work: "WorkA",
WorkInstances: [
WorkInstance: {
Type: "Type1",
Result: "Success"
},
WorkInstance: {
Type: "Type2",
Result: "Failure"
}
]
},
{
Work: "WorkB",
WorkInstances: [
WorkInstance: {
Type: "Type3",
Result: "Success"
},
WorkInstance: {
Type: "Type4",
Result: "Failure"
}
]
}
]
Я не вижу великого способ сделать это в AutoMapper.
Есть идеи?
Отредактировано для исправления синтаксиса в объявлении WorkInstance.
То, что я не собирался выяснить, это как отобразить коллекцию n входные объекты в m выходные объекты, где m <<em> n .