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

如何将List<DapperRow>转换为自定义实体类?

如何将List转换为List<Entity.Account>

针对你已经拿到List<DapperRow>的情况,有几种实用的转换方式:

1. 手动LINQ映射(适合字段较少的场景)

直接通过LINQ的Select方法,逐个将DapperRow的字段值赋值给Entity.Account的属性:

var accountList = ss.Select(row => new Entity.Account
{
    Id = (int)row["Id"],
    Username = (string)row["Username"],
    Email = (string)row["Email"],
    // 按Account类的属性依次完成映射
}).ToList();

2. 使用Dapper自带的Get<T>方法(类型更安全)

DapperRow提供了Get<T>扩展方法,可以指定字段名和目标类型,避免强制转换的风险:

var accountList = ss.Select(row => new Entity.Account
{
    Id = row.Get<int>("Id"),
    Username = row.Get<string>("Username"),
    Email = row.Get<string>("Email"),
    // 其他属性同理
}).ToList();

3. 自动映射(适合字段较多的场景)

如果你的Entity.Account属性和数据库字段名一致,可以用AutoMapper完成自动映射,需要先安装AutoMapper NuGet包:

// 配置映射规则
var mapperConfig = new MapperConfiguration(cfg => 
{
    cfg.CreateMap<DapperRow, Entity.Account>();
});
var mapper = mapperConfig.CreateMapper();

// 执行转换
var accountList = ss.Select(mapper.Map<Entity.Account>).ToList();

额外建议

其实最高效的方式是直接在查询时获取强类型列表,也就是你一开始了解的写法:

var accountList = db.Query<Entity.Account>("Select * From Account").ToList();

这样可以跳过后续的转换步骤,Dapper会直接在查询过程中完成类型映射,既简洁又高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:01:41