泛型集合转换为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; }
    }
}
时间: 2024-12-13 05:39:20

泛型集合转换为DataTable的相关文章

c#将list集合转换为datatable的简单办法

public static class ExtensionMethods        {        /// <summary>        /// 将List转换成DataTable        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="data"></param>

使用泛型集合代替datatable作为返回值实现面向对象

开会的时候,师父说,我们在机房重构时,尽量不要用datatable作为返回值,改用泛型集合的方式,这样可以实现真正的面向对象.通过查资料和同学交流,把这个问题给解决了.对于泛型集合,我也有了一些认识. 一.对泛型集合的认识 1.存在于System.Collection,Generic的命名空间中,在用的时候,需要引用 2.泛型是具有占位符(类型参数)的类,结构,接口和方法.就是说,在泛型集合中加入的数据必须符合指定的类型<T>,否则编译时就会报错. 以上为设计模式培训实习生的内容. 那泛型集合

关于List&lt;&gt;(实体类)泛型集合转DataTable_ONE

// 泛型集合转DataTable,T为Linq实体类 public delegate void GetDataTableRow<T>(T t,System.Data.DataTable d);        public static void ExcelOut2<T>(DataGrid gt, GetDataTableRow<T> GetDataTableRow)        {                            ItemCollection

vb.net环境下将DataTable转成泛型集合方法

背景 做机房收费系统的时候,遇到这样一个问题,将数据库表中的数据取出一行,将每个单元格中的内容填充到窗体 的文本框中.考虑到用DataReader获取结果的复杂性,我就用了泛型集合.可是这么一用却出现了如图所示的问 题. 问题一: 出现这种问题,是因为在DataTable转实体类型时表的字段类型和实体的字段类型不一致造成的. 这个也可以 这么说,中国人的孩子都随父姓,这是传统.但孩子随母姓,就有些不妥. 问题二: 数据库表中字段名和要转换的实体属性字段名不一致,导致转换后实体中depart为空值

[工具类]DataTable与泛型集合List互转

写在前面 工作中经常遇到datatable与list,对于datatable而言操作起来不太方便.所以有的时候还是非常希望通过泛型集合来进行操作的.所以这里就封装了一个扩展类.也方便使用. 类 方法中主要使用了反射的方式动态的为属性赋值以及取值. public static class Extension { /// <summary> /// 将datatable转换为泛型集合 /// </summary> /// <typeparam name="TEntity

泛型学习第三天——C#读取数据库返回泛型集合 把DataSet类型转换为List&lt;T&gt;泛型集合

定义一个类: public class UserInfo    {        public System.Guid ID { get; set; } public string LoginName { get; set; } public string LoginPwd { get; set; }    } /// <summary> /// 获取UserInfo泛型集合 /// </summary> /// <param name="connStr"

读取数据库返回泛型集合 把DataSet类型转换为List&lt;T&gt;泛型集合

转自 http://www.cnblogs.com/wuhuisheng/archive/2012/04/26/2471733.html 1 /// <summary> 2 /// 获取UserInfo泛型集合 3 /// </summary> 4 /// <param name="connStr">数据库连接字符串</param> 5 /// <param name="sqlStr">要查询的T-SQL&

DataTable转化为泛型集合

前一段时间,因为做机房重构基本思路都没有搞清楚,然后周围接触的概念太多了,就想一开始什么都加上,不堪重负,起步很慢.后来经亮哥提点,一点一点的加东西,就好很多了. 对于泛型集合,前面有很多男神女神已经写的很详细了.但是知识自己总结的才能算是印脑子里了.我就写写自己的理解吧. 看完关于泛型集合的相关资料(博客.设计模式.网上其他一些介绍...),理一理思路: 是什么? [泛型是具有占位符(类型参数)的类.结构.接口和方法.这些占位符是类.结构.接口和方法所存储或使用的一个或多个类型的占位符. 泛型

C# 将list&lt;&gt;泛型集合 转化为 DataTable

使用案例:将页面easy ui 中datagrid表格中的数据,存成json字符串, 通过ajax和ashx传入C#将string类型的json字符串解析成list<>泛型集合, 由于业务需要,将本地sql不同表的数据和页面html的数据(通过webservice传入),放在一起处理数据. 转化方法: public class ListToDatatable { public ListToDatatable() { } public static DataTable ListToDataTab