如何将SearchCompanyResponse中的列表映射为Company类型列表companies
将SearchCompanyResponse映射为List的几种实现方式
手动遍历(直观可控,适合简单场景)
直接循环结果集,逐个创建Company对象并添加到目标列表:
var searchCompany = new SearchCompanyRequest(); searchCompany.Query = request.Name; searchCompany.DatlinqKey = "TestKey"; var searchCompanyResponse = GetApi<SearchCompanyRequest,SearchCompanyResponse>(DatlinqApiMethod.SearchCompany, searchCompany); var companies = new List<Company>(); if (searchCompanyResponse?.Result != null) { foreach (var item in searchCompanyResponse.Result) { companies.Add(new Company { Id = item.Id, Name = item.Name }); } }
LINQ投影(代码简洁,适合字段匹配场景)
利用LINQ的Select方法快速转换集合,一行代码完成映射:
var searchCompany = new SearchCompanyRequest(); searchCompany.Query = request.Name; searchCompany.DatlinqKey = "TestKey"; var searchCompanyResponse = GetApi<SearchCompanyRequest,SearchCompanyResponse>(DatlinqApiMethod.SearchCompany, searchCompany); var companies = searchCompanyResponse?.Result? .Select(item => new Company { Id = item.Id, Name = item.Name }) .ToList() ?? new List<Company>();
AutoMapper(适合多场景复用,减少重复代码)
如果项目已引入AutoMapper,先配置映射规则,再快速转换:
- 全局配置映射规则(如在Startup/Program.cs中初始化):
var mapperConfig = new MapperConfiguration(cfg => { cfg.CreateMap<SearchCompanyResponseCompany, Company>(); }); var mapper = mapperConfig.CreateMapper();
- 业务代码中执行映射:
var searchCompany = new SearchCompanyRequest(); searchCompany.Query = request.Name; searchCompany.DatlinqKey = "TestKey"; var searchCompanyResponse = GetApi<SearchCompanyRequest,SearchCompanyResponse>(DatlinqApiMethod.SearchCompany, searchCompany); var companies = mapper.Map<List<Company>>(searchCompanyResponse?.Result);
注意事项
- 必须做空值判断:
searchCompanyResponse或Result可能为null,直接访问会触发空引用异常,上述示例均包含空值处理逻辑。 - 当
SearchCompanyResponseCompany与Company字段结构完全一致时,前两种方式足够高效;若映射规则复杂或需多处复用,AutoMapper是更优选择。
内容的提问来源于stack exchange,提问作者Robin Groot
相关产品推荐
相关产品推荐

