首页 > 代码库 > 将List转换成DataTable

将List转换成DataTable

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Reflection;using YTO.WeiXin.Model;using System.Collections;namespace WeiXin.Core{    public class ListToDataTable    {        public static DataTable ToDataTable<T>(IList<T> list)        {            return ToDataTable(list, null);        }        //将list转换成DataTable        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;        }        //AuthorizationInfo 将DataTable转换成list        public static IList<AuthorizationInfo> ToList(DataTable dt, IList<AuthorizationInfo> list1)        {            //IList<AuthorizationInfo> list1 = new List<AuthorizationInfo>();            for (int i = 0; i < dt.Rows.Count; i++)            {                AuthorizationInfo authInfo = new AuthorizationInfo();                authInfo.Id = (dt.Rows[i].ItemArray[0]).ToString();                authInfo.LiencePlateNumber = (dt.Rows[i].ItemArray[1]).ToString();                authInfo.Bar_code = (dt.Rows[i].ItemArray[2]).ToString();                authInfo.PhoneNumber = (dt.Rows[i].ItemArray[3]).ToString();                authInfo.OpenId = (dt.Rows[i].ItemArray[4]).ToString();                authInfo.CreateTime = Convert.ToDateTime(dt.Rows[i].ItemArray[5]);                authInfo.Status = (dt.Rows[i].ItemArray[6]).ToString();                list1.Add(authInfo);            }            return list1;        }        //将ExcptionInfo DataTable转换成list        public static IList<ExcptionInfo> ToList(DataTable dt, IList<ExcptionInfo> list1)        {            //IList<ExcptionInfo> list1 = new List<ExcptionInfo>();            for (int i = 0; i < dt.Rows.Count; i++)            {                ExcptionInfo exInfo = new ExcptionInfo();                exInfo.Id = (dt.Rows[i].ItemArray[0]).ToString();                exInfo.LiencePlateNumber = (dt.Rows[i].ItemArray[1]).ToString();                exInfo.CarLine = (dt.Rows[i].ItemArray[2]).ToString();                exInfo.PhoneNumber = (dt.Rows[i].ItemArray[3]).ToString();                exInfo.OpenId = (dt.Rows[i].ItemArray[4]).ToString();                exInfo.CreateTime = Convert.ToDateTime(dt.Rows[i].ItemArray[5]);                exInfo.Remark = (dt.Rows[i].ItemArray[8]).ToString();                exInfo.ExcptionCategory = (dt.Rows[i].ItemArray[6]).ToString();                exInfo.Position = (dt.Rows[i].ItemArray[7]).ToString();                list1.Add(exInfo);            }            return list1;        }    }}

 

将List转换成DataTable