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

如何将List<dynamic>类型列表转换为自定义List<modal>模型类列表?

错误原因

你当前的写法只是直接对List<dynamic>调用ToList(),没有做任何类型映射逻辑,运行时无法自动把dynamic类型的对象转换为你自定义的ModalReportIndidual1模型类实例,所以会抛出类型转换异常。

正确转换方式

以下是两种常用的可行方案:

方案1:手动属性映射(性能最优、可控性最高)

如果dynamic对象的属性和ModalReportIndidual1的属性一一对应,直接用LINQ的Select方法逐个映射即可:

List<dynamic> _PhysicalResult = new List<dynamic>();
_PhysicalResult.AddRange(data);
_PhysicalResult.AddRange(familydata);

List<ModalReportIndidual1> studentDetails = _PhysicalResult.Select(item => new ModalReportIndidual1
{
    // 按照你模型的实际属性名逐个赋值,示例如下
    Id = item.Id,
    StudentName = item.StudentName,
    CheckDate = item.CheckDate,
    // 其余属性依次补充
}).ToList();

如果涉及类型不匹配的场景(比如dynamic里的存储的是字符串格式的日期,需要转成DateTime类型),直接在赋值时做对应类型转换即可。

方案2:序列化反序列化快速转换(适合属性匹配度高、不想写大量映射代码的场景)

如果dynamic对象是从JSON解析得到,或者所有字段和模型完全匹配,可以用序列化反序列化的方式批量转换。
使用Newtonsoft.Json的写法:

using Newtonsoft.Json;

// 先把dynamic列表序列化为json字符串,再反序列化为目标类型列表
string jsonStr = JsonConvert.SerializeObject(_PhysicalResult);
List<ModalReportIndidual1> studentDetails = JsonConvert.DeserializeObject<List<ModalReportIndidual1>>(jsonStr);

使用.NET内置System.Text.Json的写法:

using System.Text.Json;

string jsonStr = JsonSerializer.Serialize(_PhysicalResult);
List<ModalReportIndidual1> studentDetails = JsonSerializer.Deserialize<List<ModalReportIndidual1>>(jsonStr);

注意:如果属性名存在大小写差异,需要给序列化工具配置忽略大小写的规则,否则会出现属性赋值为空的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:18:04