IList及泛型集合类转换DataTable

it2025-10-26  8

         /**/ /// <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;        }          /**/ /// <summary>        /// 将泛型集合类转换成DataTable        /// </summary>        /// <typeparam name="T">集合项类型</typeparam>        /// <param name="list">集合</param>        /// <returns>数据集(表)</returns>          public   static  DataTable ToDataTable < T > (IList < T >  list)         {            return  ConvertX.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;        }

转载于:https://www.cnblogs.com/zhahost/archive/2008/06/02/1212470.html

相关资源:数据结构—成绩单生成器
最新回复(0)