You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在对象初始化时实现Application到ApplicationDTO的列表属性转换?

在对象初始化时完成业务对象到DTO的列表转换

你可以通过LINQ的Select方法在DTO的对象初始化器里直接完成列表转换,不需要额外的for循环。注意你的示例代码里有个小问题:ApplicationList是List<Application>类型,需要先取出单个Application实例(比如取第一个或按业务逻辑筛选),再进行映射。

完整示例代码如下:

// 获取业务对象列表
List<Application> ApplicationList = await _dbContextDigitVP.Applications.FromSqlRaw("Exec dbo.GetApplication {0}", id).ToListAsync();

// 取出目标业务对象(根据实际逻辑调整,比如取第一个或指定元素)
var targetApplication = ApplicationList.FirstOrDefault();

// 直接在对象初始化时完成所有字段映射,包括列表
ApplicationDTO applicationDTO = new ApplicationDTO
{
    ApplicationNumber = targetApplication?.ApplicationNumber,
    Country = targetApplication?.Country,
    ApplicationUuid = targetApplication?.ApplicationUuid,
    PwEmployeeAdUserName = targetApplication?.PwEmployeeAdUserName,
    Category = targetApplication?.Category != null 
        ? new ApplicationCategoryDTO { Category = targetApplication.Category.Category }
        : null,
    // 核心:用Select遍历原列表并转换每个元素,再转成List
    Applicants = targetApplication?.Applicants?
        .Select(applicant => new ApplicantDTO
        {
            // 这里填写Applicant到ApplicantDTO的字段映射,示例:
            ApplicantId = applicant.ApplicantId,
            FullName = applicant.FullName,
            ContactEmail = applicant.ContactEmail
            // 其他需要映射的字段
        })
        .ToList() ?? new List<ApplicantDTO>()
};

关键说明:

  • Select(applicant => new ApplicantDTO { ... })会遍历原Applicants列表的每个元素,将其转换为ApplicantDTO类型
  • ToList()把LINQ查询结果转换成List<ApplicantDTO>,匹配DTO的属性类型要求
  • 链式的?.和??运算符用来处理原对象或原列表为null的情况,避免空引用异常

如果后续有大量类似的对象转换需求,也可以考虑使用AutoMapper这类映射库简化代码,但上述方式完全能满足你在对象初始化时完成列表转换的需求。

内容的提问来源于stack exchange,提问作者Florent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:15:40