zoukankan      html  css  js  c++  java
  • 通过反射和泛型实现DataTable转Object

    实现DataTable转为对象
    /// <summary>
            /// 转换DataTable为指定类型的list对象
            /// </summary>
            /// <typeparam name="T">指定的转换类型</typeparam>
            /// <param name="dt">需要转换的DataTable</param>
            /// <returns></returns>
            public static List<T> DataTableToList<T>(DataTable dt) where T : class, new()
            {
                var list = new List<T>();
                if (dt.Rows.Count > 0)
                {
                    var propertyInfoes = typeof(T).GetProperties();
                    foreach (DataRow dataRow in dt.Rows)
                    {
                        var t = new T();
                        foreach (var propertyInfo in propertyInfoes)
                        {
                            var tempName = propertyInfo.Name;
                            if (dt.Columns.Contains(tempName))
                            {
                                if (!propertyInfo.CanWrite) continue;
                                object value = dataRow[tempName];
                                if (value != DBNull.Value)
                                {
                                    propertyInfo.SetValue(t, value);
                                }
                            }
                        }
                        list.Add(t);
                    }
                }
    
                return list;
            }
    
            public static T DataTableToModel<T>(DataTable dt) where T : class, new()
            {
                if (dt.Rows.Count <= 0)
                {
                    return default(T);
                }
                else
                {
                    var t = new T();
                    var propertyInfoes = typeof(T).GetProperties();
                    foreach (var propertyInfo in propertyInfoes)
                    {
                        var tempName = propertyInfo.Name;
                        if (dt.Columns.Contains(tempName))
                        {
                            if (!propertyInfo.CanWrite) continue;
                            object value = dt.Rows[0][tempName];
                            if (value != DBNull.Value)
                            {
                                propertyInfo.SetValue(t, value);
                            }
                        }
                    }
    
                    return t;
                }
            }
        }
    
  • 相关阅读:
    初学Android: 四大组件之Activity
    jQuery Pagination Plugin ajax分页控件
    PHPExcel 多工作表 导入
    PHPExcel 多工作表 导出
    js常用方法
    如何让多个不同版本的jquery库共存
    总结机器学习部分计算原理—续
    第四周学习进度报告
    总结机器学习部分计算原理
    数据清洗报告
  • 原文地址:https://www.cnblogs.com/prayol/p/8507961.html
Copyright © 2011-2022 走看看