[工具类]泛型集合转换为DataTable

写在前面

在实际项目中,用到了将集合转换为DataTable,就试着封装了一个方法,记录一下。

代码

复制代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Wolfy.List2DataTable
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Person> lst = new List<Person>() 
            { 
                new Person(){ ID=1, Gender=false, Name="wolfy1"},
                 new Person(){ ID=2, Gender=false, Name="wolfy2"},
                  new Person(){ ID=3, Gender=false, Name="wolfy3"},
                   new Person(){ ID=4, Gender=false, Name="wolfy4"},
                    new Person(){ ID=5, Gender=false, Name="wolfy5"},
            };
            DataTable dt = List2DataTable<Person>(lst);
            Console.WriteLine("转换结束");
            Console.Read();
        }
        /// <summary>
        /// 将泛型集合转换为datatable
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="entities"></param>
        /// <returns></returns>
        static DataTable List2DataTable<TEntity>(List<TEntity> entities)
        {
            if (entities == null)
            {
                throw new ArgumentNullException("转换的集合为空");
            }
            Type type = typeof(TEntity);
            PropertyInfo[] properties = type.GetProperties();
            DataTable dt = new DataTable(type.Name);
            foreach (var item in properties)
            {
                dt.Columns.Add(new DataColumn(item.Name) { DataType = item.PropertyType });
            }
            foreach (var item in entities)
            {
                DataRow row = dt.NewRow();
                foreach (var property in properties)
                {
                    row[property.Name] = property.GetValue(item);
                }
                dt.Rows.Add(row);
            }
            return dt;
        }
    }
    public class Person
    {
        public int ID { set; get; }
        public string Name { set; get; }
        public bool Gender { set; get; }
    }
}
复制代码

测试结果:

博客地址:http://www.cnblogs.com/wolf-sun/
博客版权:本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。http://www.cnblogs.com/wolf-sun/p/4593064.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值