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

如何更优雅地将含type/value的对象列表映射为单个Person对象?

优雅转换PersonDataEntries列表为Person对象的方案

你的问题核心是多次重复遍历列表查询指定类型数据,既繁琐又影响性能,推荐先把列表转成字典来优化,只需要遍历一次列表,后续通过键值对快速查找:

优化步骤

  1. 先将列表转换为以Type为键、Value为值的字典,仅遍历一次列表:
var dataDict = personDataEntriesList.ToDictionary(x => x.Type, x => x.Value);
  1. 通过字典直接取值构建Person对象,代码简洁且查找效率更高:
return new Person(
    FirstName: dataDict["firstname"],
    LastName: dataDict["lastname"],
    BirthDay: DateTime.Parse(dataDict["birthday"])
);

补充说明

  • 原代码里的Single()会在找不到对应Type时抛出InvalidOperationException,用字典索引器取值时,找不到对应键会抛出KeyNotFoundException,异常行为接近,保持了原有的严格校验逻辑。
  • 如果需要兼容部分Type缺失的场景,可以用TryGetValue做安全处理:
if (!dataDict.TryGetValue("firstname", out var firstName))
{
    // 这里可以赋值默认值,或者抛出自定义异常
    firstName = string.Empty;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:36:23