首页 > 代码库 > List转DataTable(反射) ; 将泛型集合类转换成DataTable ; 将集合类转换成DataTable

List转DataTable(反射) ; 将泛型集合类转换成DataTable ; 将集合类转换成DataTable

        #region 将集合类转换成DataTable        /// <summary>        /// 将集合类转换成DataTable        /// </summary>        /// <param name="list">集合</param>        /// <returns></returns>        public static DataTable ToDataTable(IList list)        {            DataTable result = new DataTable();            if (list.Count > 0)            {                PropertyInfo[] propertys = list[0].GetType().GetProperties();                foreach (PropertyInfo pi in propertys)                {                    result.Columns.Add(pi.Name, pi.PropertyType);                }                for (int i = 0; i < list.Count; i++)                {                    ArrayList tempList = new ArrayList();                    foreach (PropertyInfo pi in propertys)                    {                        object obj = pi.GetValue(list[i], null);                        tempList.Add(obj);                    }                    object[] array = tempList.ToArray();                    result.LoadDataRow(array, true);                }            }            return result;        }        #endregion        #region 将泛型集合类转换成DataTable        /// <summary>        /// 将泛型集合类转换成DataTable        /// </summary>        /// <typeparam name="T">集合项类型</typeparam>        /// <param name="list">集合</param>        /// <returns>数据集(表)</returns>        public static DataTable ToDataTable<T>(IList<T> list)        {            return ToDataTable<T>(list, null);        }        /// <summary>        /// 将泛型集合类转换成DataTable        /// </summary>        /// <typeparam name="T">集合项类型</typeparam>        /// <param name="list">集合</param>        /// <param name="propertyName">需要返回的列的列名</param>        /// <returns>数据集(表)</returns>        public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName)        {            List<string> propertyNameList = new List<string>();            if (propertyName != null)                propertyNameList.AddRange(propertyName);            DataTable result = new DataTable();            if (list.Count > 0)            {                PropertyInfo[] propertys = list[0].GetType().GetProperties();                foreach (PropertyInfo pi in propertys)                {                    if (propertyNameList.Count == 0)                    {                        result.Columns.Add(pi.Name, pi.PropertyType);                    }                    else                    {                        if (propertyNameList.Contains(pi.Name))                            result.Columns.Add(pi.Name, pi.PropertyType);                    }                }                for (int i = 0; i < list.Count; i++)                {                    ArrayList tempList = new ArrayList();                    foreach (PropertyInfo pi in propertys)                    {                        if (propertyNameList.Count == 0)                        {                            object obj = pi.GetValue(list[i], null);                            tempList.Add(obj);                        }                        else                        {                            if (propertyNameList.Contains(pi.Name))                            {                                object obj = pi.GetValue(list[i], null);                                tempList.Add(obj);                            }                        }                    }                    object[] array = tempList.ToArray();                    result.LoadDataRow(array, true);                }            }            return result;        }        #endregion

这个看在自己的类库里面  例如  Common层的 ConvertX 类,专门用于什么转换之类的