c# - 从 DataTable 映射到属性名称不同于列名称的自定义模型

标签 c# model datatable automapper

在我正在处理的应用程序中,数据以数据集的形式获取和返回。但是,我想让应用程序基于模型,因此我需要将数据集映射到我的自定义模型类。我遇到过 this 将数据表转换为自定义模型类的方法。

由于我无法控制返回数据集的数据源,因此无法重命名其列名。仍然在模型类中,我想使用具有我自己约定名称的属性。

案例是:假设我有一个模型

class PersonModel
{
    public int ID { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }
}

并且源数据表包含名为IdentificatorFirst_NameLast_Name 的列。有没有办法以某种方式绑定(bind)相应的标签并将数据表的内容映射到 PersonModel 的集合?

最佳答案

首先,您将按如下方式创建映射:

Mapper.CreateMap<IDataReader, PersonModel>()                
.ForMember(dest => dest.ID, opt => opt.MapFrom(src => src.GetInt32(src.GetOrdinal("Identificator"))))
.ForMember(dest => dest.FirstName , opt => opt.MapFrom(src => src.GetString(src.GetOrdinal("First_Name"))))
.ForMember(dest => dest.LastName , opt => opt.MapFrom(src => src.GetString(src.GetOrdinal("Last_Name"))));

然后在您的代码中创建一个数据读取器并映射它:

// Get the data reader and store in dr variable

var people = Mapper.Map<IDataReader, List<PersonModel>>(dr);

关于c# - 从 DataTable 映射到属性名称不同于列名称的自定义模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335994/

相关文章:

c# - 将两张图片合成一张新图片

javascript - 在 Chart.js MVC c# 中使用模型中的数据

c# - 获取两个数据表中的公共(public)行

python - 如何在 python 中将 qwidgettable 中的列设置为会计格式?

c# - https 使用 BasicHttpBinding 并忽略证书错误

c# - 无法将号码添加到列表中

c# - Parallel.For 和 For 产生不同的结果

ruby-on-rails - 如何从模型的lambda中访问rails errors数组?

python - 如何从破折号下拉菜单中选择并运行模型并更新混淆矩阵图?

c# - 数据表Select语句问题