zoukankan      html  css  js  c++  java
  • dataset和实体类 之间的转换

    //dataset转实体类
    public static IList<T> FillModel(DataSet ds)
    {
    List<T> l = new List<T>();
    T model = default(T);

    if (ds.Tables[0].Columns[0].ColumnName == "rowId")
    {
    ds.Tables[0].Columns.Remove("rowId");
    }

    foreach (DataRow dr in ds.Tables[0].Rows)
    {

    model = Activator.CreateInstance<T>();

    foreach (DataColumn dc in dr.Table.Columns)
    {

    PropertyInfo pi = model.GetType().GetProperty(dc.ColumnName);
    if (dr[dc.ColumnName] != DBNull.Value)
    pi.SetValue(model, dr[dc.ColumnName], null);
    else
    pi.SetValue(model, null, null);

    }
    l.Add(model);
    }

    return l;

    }

    /// <summary>
    /// 将实体类转换成DataTable
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="i_objlist"></param>
    /// <returns></returns>
    public static DataTable Fill<T>(IList<T> objlist)
    {
    if (objlist == null || objlist.Count <= 0)
    {
    return null;
    }
    DataTable dt = new DataTable(typeof(T).Name);
    DataColumn column;
    DataRow row;

    System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

    foreach (T t in objlist)
    {
    if (t == null)
    {
    continue;
    }

    row = dt.NewRow();

    for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
    {
    System.Reflection.PropertyInfo pi = myPropertyInfo[i];

    string name = pi.Name;

    if (dt.Columns[name] == null)
    {
    column = new DataColumn(name, pi.PropertyType);
    dt.Columns.Add(column);
    }

    row[name] = pi.GetValue(t, null);
    }

    dt.Rows.Add(row);
    }
    return dt;
    }

  • 相关阅读:
    core文件生成总结
    php 5.2 版本isset()方法小坑
    gdb调试memcached
    mysql的sql优化案例
    php对mongo操作问题
    memcache锁
    php的session实现
    linux指令tips
    php拦截器(魔术方法)
    Nginx源码研究八:nginx监听socket实现流程
  • 原文地址:https://www.cnblogs.com/yiwuya/p/3018830.html
Copyright © 2011-2022 走看看