【发布时间】:2020-02-26 11:21:40
【问题描述】:
我有一个数据库实体数组,我需要将其转换为不同的类以用作 REST 请求结果:
DatabaseDTO[] arrayFromDb = _repo.GetAllData();
OutgoinDTO[] = convertFromDatabaseDTO (arrayFromDb);
最有效的方法是什么(我假设OutgoingDTO 有一个采用DatabaseDTO 的构造函数)
【问题讨论】:
-
鉴于您在数组之间进行转换,也许
Array.ConvertAll()可以解决问题?这可能是最有效的。 -
定义“高效”;编码努力?内存使用情况?运行?依赖树?代码行?分配?这些都是相互竞争的因素:你不能说“全部”
-
为什么不创建一个具有所需大小的新数组并循环?这就是Array.ConvertAll 所做的。您有特定的性能问题吗?例如,转换构造函数本身就是将这两种类型绑定在一起的额外复杂性。为什么不使用单独的转换方法?还是自动映射器?你在找什么?
-
一种方法是不要一开始就构建“错误”类型的数组。如果您可以即时转换它们,您将节省大量内存。查看您的存储库是否可能无法进行重写,它返回
IEnumerable而不是数组。 -
明确地说,
DatabaseDTO[] arrayFromDb = _repo.GetAllData(); OutgoinDTO[] = Array.ConvertAll(arrayFromDb, x => new OutgoinDTO(x));