List转Datatable 新方法

这篇博客介绍了两种在C#中将List转换为DataTable的方法。第一种是通过手动添加列和行来实现,第二种是通过扩展方法实现,包括ToDataTable<T>(this IEnumerable<T> list)和ToList<T>(this DataTable dt)等,方便地进行类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1,最简单的转换

DataTable dt = new DataTable();            

dt.Columns.Add("id");            

dt.Columns.Add("name");

dt.Rows.Add(new object[]{ 0,"顶层菜单"});            

foreach (var cm in comdList)            

{            

DataRow dr = dt.NewRow();             

dr["id"] = cm.SYS_COMMANDS_ID;             

dr["name"] = cm.TXT_COMMANDTITLE;            

dt.Rows.Add(dr);            

}

方法2,建立类

 

public static class DataTableExtensions

    {

        /// <summary>   

 

        /// 转化一个DataTable   

 

        /// </summary>   

 

        /// <typeparam name="T"></typeparam>   

        /// <param name="list"></param>   

        /// <returns></returns>   

        public static DataTable ToDataTable<T>(this IEnumerable<T> list)

        {

 

            //创建属性的集合   

            List<PropertyInfo> pList = new List<PropertyInfo>();

            //获得反射的入口   

 

            Type type = typeof(T);

            DataTable dt = new DataTable();

            //把所有的public属性加入到集合 并添加DataTable的列   

            Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name, p.PropertyType); });

            foreach (var item in list)

            {

                //创建一个DataRow实例   

                DataRow row = dt.NewRow();

                //给row 赋值   

                pList.ForEach(p => row[p.Name] = p.GetValue(item, null));

                //加入到DataTable   

                dt.Rows.Add(row);

            }

            return d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值