ibcadmin 发表于 2014-4-19 09:44:41

List转DataTable代码

楼主昨天遇到需要转换的问题,某度了一下,下面贴上代码。
主要是反射原理。

代码:


/// <summary>
      /// 将list 转换 DataTable
      /// </summary>
      /// <typeparam name="T">对象类型</typeparam>
      /// <param name="list">list集合</param>
      /// <returns></returns>
      public static DataTable ToDataTable<T>(List<T> list)
      {
            DataTable result = new DataTable();
            if (list.Count > 0)
            {
                //用PropertyInfo获取list的公共属性
PropertyInfo[] propertys = list.GetType().GetProperties();
                //遍历
foreach (PropertyInfo pi in propertys)
                {
                  //给DataTable附上列名
result.Columns.Add(pi.Name, pi.PropertyType);
                }

                for (int i = 0; i < list.Count; i++)
                {
                  ArrayList tempList = new ArrayList();
                  foreach (PropertyInfo pi in propertys)
                  {
                        //声明一个ArrayList集合,将list中的值给ArrayList,长度不明确给NULL
                        object obj = pi.GetValue(list, null);
                        tempList.Add(obj);
                  }
                  object[] array = tempList.ToArray();
                  //将数组获取的值给DataTable,array为值的集合,true为添加新行
result.LoadDataRow(array, true);
                }
            }
            return result;
      }





ibcadmin 发表于 2014-4-19 09:49:58

真的再次发现,如果不设置回复可见,还真没人回复

飞/可爱朋 发表于 2014-4-19 10:08:02

顶个....

飞/可爱朋 发表于 2014-4-19 10:08:18

为了你的注释.....再顶个

ibcadmin 发表于 2014-4-19 10:10:00

飞/可爱朋 发表于 2014-4-19 02:08
为了你的注释.....再顶个

以后保证都写注释 {:3_44:}

飞/可爱朋 发表于 2014-4-19 10:11:58

ibcadmin 发表于 2014-4-19 10:10
以后保证都写注释

:lol注释不仅方便别个,也更是方便自己........你都不带头写好注释,让我们肿么活

ibcadmin 发表于 2014-4-19 10:26:39

飞/可爱朋 发表于 2014-4-19 02:11
注释不仅方便别个,也更是方便自己........你都不带头写好注释,让我们肿么活

好吧 我知道错了{:3_58:}    以后保证写

HelloWorld 发表于 2014-4-24 13:59:46

《C#程序的157个建议》里不让写注释;P

ibcadmin 发表于 2014-4-24 16:33:49

HelloWorld 发表于 2014-4-24 05:59
《C#程序的157个建议》里不让写注释

为撒不让写。。
页: [1]
查看完整版本: List转DataTable代码