zoukankan      html  css  js  c++  java
  • DataTable、实体类Model和泛型List之间的转化

    1.网上例子

    http://www.2cto.com/kf/201204/127785.html

    Serialize() 和getSendDetailTest()

    2.研发中例子

    dt转化成model

    dt转化model Code
     1  public static object GetModel(DataTable dt, object model)
     2         {
     3 
     4             foreach (DataRow row in dt.Rows)
     5             {
     6                 foreach (var item in model.GetType().GetProperties())
     7                 {
     8                     if (row.Table.Columns.Contains(item.Name))
     9                     {
    10                         if (DBNull.Value != row[item.Name])
    11                         {
    12                             item.SetValue(model, Convert.ChangeType(row[item.Name], item.PropertyType), null);
    13                         }
    14 
    15                     }
    16                 }
    17             }
    18             return model;
    19         }

    model 经过list 转化成dt

    View Code
    List<Sys_grade> list = new List<Sys_grade>();
                            list.Add(grade);
                            DataTable dtgrade = new DataTable();
                            dtgrade = KeyValueHelper.ListToDataTable(list);
                            daclient.SysGradeAdd(dtgrade);

    ListToDataTable()方法:

    View Code
     1   public static DataTable ListToDataTable<T>(List<T> entitys)
     2         {
     3 
     4             //检查实体集合不能为空
     5             if (entitys == null || entitys.Count < 1)
     6             {
     7                 return new DataTable();
     8             }
     9 
    10             //取出第一个实体的所有Propertie
    11             Type entityType = entitys[0].GetType();
    12             PropertyInfo[] entityProperties = entityType.GetProperties();
    13 
    14             //生成DataTable的structure
    15             //生产代码中,应将生成的DataTable结构Cache起来,此处略
    16             DataTable dt = new DataTable("dt");
    17             for (int i = 0; i < entityProperties.Length; i++)
    18             {
    19                 //dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
    20                 dt.Columns.Add(entityProperties[i].Name);
    21             }
    22 
    23             //将所有entity添加到DataTable中
    24             foreach (object entity in entitys)
    25             {
    26                 //检查所有的的实体都为同一类型
    27                 if (entity.GetType() != entityType)
    28                 {
    29                     throw new Exception("要转换的集合元素类型不一致");
    30                 }
    31                 object[] entityValues = new object[entityProperties.Length];
    32                 for (int i = 0; i < entityProperties.Length; i++)
    33                 {
    34                     entityValues[i] = entityProperties[i].GetValue(entity, null);
    35 
    36                 }
    37                 dt.Rows.Add(entityValues);
    38             }
    39             return dt;
    40         }

    备注:List<>:表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法。

    最后:感谢网友提供资料。

  • 相关阅读:
    hive_case
    hive_group
    linux-搭建ngnix
    Nfs服务器搭建
    几种常见的启动脚本
    linux 修改本机的端口映射
    oracle-sql计算
    linux 磁盘大小查看
    postMan测试接口的几种方式
    oracle迁移到12c的时列转行 wm_concat 报错解决
  • 原文地址:https://www.cnblogs.com/lei2007/p/2960278.html
Copyright © 2011-2022 走看看