c# - 如何在 AutoMapper 中进行聚合?
问题描述
我正在一个项目中工作,该项目使用 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 中看到这样做的好方法。
有任何想法吗?
编辑以修复 WorkInstance 声明的语法。
我还没想明白的是如何将n 个输入对象的集合映射到m个输出对象,其中m < n。
解决方案
推荐阅读
- c# - SignalR Hub 的 Context 属性没有通过使用 GetHttpContext 方法给我 Http Context
- linux - 如何让其他用户像我一样像sudo一样运行特定程序,但我们俩都不是Linux的root用户
- node.js - 如何使用 nodejs 有效地将请求转发到多个端点?
- assembly - 引导加载程序加载自身而不是内核
- python - 如何使用包含的关键字对 pandas 中的数据进行分类
- mysql - 具有多点数据类型的 mysqlimport 或 LOAD DATA INFILE
- javascript - Javascript group by 用一个对象数组来获得一个最终的键
- android - 清单合并失败:未找到引用的导航文件
- java - 为什么 compareTo() 的行为是这样的
- python - 在正则表达式匹配之间插入空格