首页 > 代码库 > 一些DataTable和IList间转换的封装

一些DataTable和IList间转换的封装

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.ComponentModel;using System.Reflection;public class CollectionHelper    {        private CollectionHelper()        {        }        public static List<T> Distinct<T>(IList<T> list)        {            List<T> list1 = new List<T>();            foreach (T obj in list)            {                if (!list1.Contains(obj))                    list1.Add(obj);            }            return list1;        }        public static DataTable ConvertTo<T>(IList<T> list)        {            DataTable table = CreateTable<T>();            Type entityType = typeof(T);            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);            foreach (T item in list)            {                DataRow row = table.NewRow();                foreach (PropertyDescriptor prop in properties)                {                    object val = prop.GetValue(item);                    if (val != null)                        row[prop.Name] = val;                }                table.Rows.Add(row);            }            return table;        }        public static IList<T> ConvertTo<T>(IList<DataRow> rows)        {            IList<T> list = null;            if (rows != null)            {                list = new List<T>();                foreach (DataRow row in rows)                {                    T item = CreateItem<T>(row);                    list.Add(item);                }            }            return list;        }        public static IList<T> ConvertTo<T>(DataTable table)        {            if (table == null)            {                return null;            }            List<DataRow> rows = new List<DataRow>();            foreach (DataRow row in table.Rows)            {                rows.Add(row);            }            return ConvertTo<T>(rows);        }        public static T CreateItem<T>(DataRow row)        {            T obj = default(T);            if (row != null)            {                obj = Activator.CreateInstance<T>();                foreach (DataColumn column in row.Table.Columns)                {                    PropertyInfo prop = obj.GetType().GetProperty(column.ColumnName);                    try                    {                        object value = http://www.mamicode.com/row[column.ColumnName];>

 

一些DataTable和IList间转换的封装