zoukankan      html  css  js  c++  java
  • DataTable转换为IList

    view plaincopy to clipboardprint?
    /// <summary>  
    /// 转换工具类  
    /// </summary>  
    /// <typeparam name="T"></typeparam>  
    public class ConvertHelper<T> where T : new()  
    {  
        /// <summary>  
        /// DataTable转换为IList  
        /// </summary>  
        /// <param name="dt"></param>  
        /// <returns></returns>  
        public static IList<T> ConvertToIList(DataTable dt)  
        {  
            // 定义集合   
            IList<T> list = 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);  
                    }  
                }  
                list.Add(t);  
            }  
            return list;  
        }  
     
        /// <summary>  
        /// Ilist 转换成 DataSet  
        /// </summary>  
        /// <param name="list"></param>  
        /// <returns></returns>  
        public static DataSet ConvertToDataSet<T>(IList<T> list)  
        {  
            DataSet ds = new DataSet();  
            ds.Tables.Add(ConvertToDataTable<T>(list));  
            return ds;  
        }  
     
        /// <summary>  
        /// Ilist 转换成 DataTable  
        /// </summary>  
        /// <param name="list"></param>  
        /// <returns></returns>  
        public static DataTable ConvertToDataTable<T>(IList<T> list)  
        {  
            if (list == null || list.Count <= 0)  
            {  
                return null;  
            }  
            DataTable dt = new DataTable(typeof(T).Name);  
            DataColumn column;  
            DataRow row;  
            PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);  
            foreach (T t in list)  
            {  
                if (t == null)  
                {  
                    continue;  
                }  
                row = dt.NewRow();  
                for (int i = 0, j = myPropertyInfo.Length; i < j; i++)  
                {  
                    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;  
        }  
     


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Hope94/archive/2010/08/05/5790185.aspx

  • 相关阅读:
    hive、sqoop、MySQL间的数据传递
    centos7配置Hadoop集群环境
    crontab定时时间解释
    Jmeter小技巧以及问题集合
    【总结】梳理下接口功能测试
    【部署问题】解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid" failed(2:No such file or directory)
    【C#公共帮助类】 ToolsHelper帮助类
    【C#公共帮助类】枚举独特类
    【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(4)对前面的一些问题汇总和总结
    【C#公共帮助类】分页逻辑处理类
  • 原文地址:https://www.cnblogs.com/scgw/p/1975054.html
Copyright © 2011-2022 走看看