zoukankan      html  css  js  c++  java
  • 泛型与datatable 转化

    背景:

    我们从数据库里读取出来的数据一般都是DataTable数据类型,但是操作这样的数据类型没有“泛型集合模型”数据类型方便

    更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。

    技能栈:泛型+反射

    转换帮助类代码:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;

    namespace AirTicketWinform
    {
    public class ModelConvertHelper<T> where T : new()
    {
    public static List<T> ConvertToModel(DataTable dt)
    {
    // 定义集合
    List<T> ts = new List<T>();

    // 获得此模型的类型
    Type type = typeof(T);
    string tempName = "";

    foreach (DataRow dr in dt.Rows)
    {
    T t = new T();
    // 获得此模型的公共属性
    PropertyInfo[] propertys = t.GetType().GetProperties();
    foreach (PropertyInfo pi in propertys)
    {
    tempName = pi.Name; // 检查DataTable是否包含此列

    if (dt.Columns.Contains(tempName))
    {
    // 判断此属性是否有Setter
    if (!pi.CanWrite) continue;

    object value = dr[tempName];
    if (value != DBNull.Value)
    pi.SetValue(t, value, null);
    }
    }
    ts.Add(t);
    }
    return ts;
    }
    }
    }
     

     调用转换代码:

    List<RegionModel> regionDataTable=null;
    /// <summary>
    /// 获取航线列表
    /// </summary>
    private void RegionDataTable()
    {
    string sql = "select id, name from Region";
    DataTable dt=DBHelper.GetDataTable(sql);

    //调用DataTable类型 转换成 List集合类型 帮助类
    regionDataTable= ModelConvertHelper<RegionModel>.ConvertToModel(dt);
    }
     

    参与资料:

    C# DataTable 和List之间相互转换的方法

    https://www.cnblogs.com/shiyh/p/7478241.html

    List与IList的区别

    http://www.cnblogs.com/wang7/archive/2012/05/16/2504634.html

     
    ————————————————
    版权声明:本文为CSDN博主「cplvfx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/cplvfx/article/details/88927448

  • 相关阅读:
    DNS 壓力測試
    2008IT技术精英年会数据库分论坛热点扫描
    DOS command
    说说大型高并发高负载网站的系统架构
    DNS Server &Bind的配置与使用
    IoC 容器和Dependency Injection 模式
    Inversion of Control Containers and the Dependency Injection pattern
    Windows 2003网络负载均衡的实现
    UVA 10369 Arctic Network
    UVA 10397 Connect the Campus
  • 原文地址:https://www.cnblogs.com/qiu18359243869/p/13040771.html
Copyright © 2011-2022 走看看