DataTable转List

    
        public static List<T> DatatTable_ToList<T>(DataTable dt) where T : class, new()
        {
            int a = 0;
            int b = 0;
            try
            {
                List<T> ts = new List<T>();

                if (dt != null && dt.Rows.Count > 0)
                {
                    // 获得此模型的类型  
                    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);  
                                    // pi.SetValue(t, Convert.ChangeType(value, pi.PropertyType, CultureInfo.CurrentCulture), null);
                                    pi.SetValue(t, ChanageType(value, pi.PropertyType), null);
                                }
                            }
                        }
                        ts.Add(t);
                    }
                }

                return ts;
            }
            catch (Exception ex)
            {
                string aa = a.ToString();
                string bb = b.ToString();
                throw;
            }
        }
 
原文地址:https://www.cnblogs.com/weixin18/p/15254079.html