码迷,mamicode.com
首页 > Windows程序 > 详细

C#将List<T>转化为DataTable

时间:2017-12-15 19:33:50      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:ble   address   tab   col   tar   space   odata   tostring   collect   

using System;
using System.Collections.Generic;
using System.Data;
using System.Reflection;
using System.Text;

namespace ConsoleApplication1
{
    static class ConvertDatatable
    {
        /// <summary>
        /// 扩展方法:将List<T>转化为DataTable
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="list"></param>
        /// <returns></returns>
        public static DataTable ToDataTable<T>(this List<T> list)
        {
            DataTable datatable = new DataTable();
            PropertyInfo[] propInfo = typeof(T).GetProperties(BindingFlags.Public|BindingFlags.Instance);
            foreach (var item in propInfo)
            {
                datatable.Columns.Add(item.Name);
            }
            foreach (T item in list)
            {
                var values=new object[propInfo.Length];
                for (int i = 0; i < propInfo.Length; i++)
                {
                    values[i] = propInfo[i].GetValue(item, null);
                }
                datatable.Rows.Add(values);
            }
            return datatable;
        }
    }

    class Student
    {
        public int? id { get; set; }
        public string name { get; set; }
        public int? age { get; set; }
        public string address { get; set; }
    }
}

 

调用:

    class Program
    {
        static void Main(string[] args)
        {
            List<Student> listStu = new List<Student>()
            {
                new Student(){id=1,name="张三",age=2,address="东十路1号"},
                new Student(){id=2,name="李四",age=8}
            };

            DataTable dt = listStu.ToDataTable<Student>();

            foreach (DataRow item in dt.Rows)
            {
                Console.Write(item["id"].ToString());
                Console.Write(item["name"].ToString());
                Console.Write(item["age"].ToString());
                Console.Write(item["address"].ToString());
                Console.WriteLine("\r\n");
            }
            Console.Read();
        }
    }

 

C#将List<T>转化为DataTable

标签:ble   address   tab   col   tar   space   odata   tostring   collect   

原文地址:http://www.cnblogs.com/AlexOneBlogs/p/8044494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!