我正在一个使用AutoMapper从我们的ORM(对象关系映射器)POCO(普通旧CLR对象)映射到我们呈现给UI的视图模型的项目中。
我有一个实例,其中涉及汇总记录。
我们输入的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的数量不同。
我希望为每个不同的WorkRecord.work使用一个WorkViewModel,并为每个带有该WorkRecord.work的WorkRecord创建一个子WorkViewModel.WorkInstance。
例如:
[
{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中,我看不到这样做的好方法。
有什么想法吗?
我尚未想出的是如何将 n 个输入对象的集合映射到 m 个输出对象,其中 m < n 。