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;
    }

  • 相关阅读:
    java中float和double的区别
    常用的排序算法及其适用场景
    高级排序
    LoadRunner 学习笔记(1)性能测试常见术语
    Oracle 常用函数
    oracle 自定义函数
    Oracle 异常处理
    Oracle 包(package)
    CF1332B Composite Coloring(数学)
    CF55D Beautiful(数位dp)
  • 原文地址:https://www.cnblogs.com/yiwuya/p/3018830.html
Copyright © 2011-2022 走看看