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 = ; 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=,name="张三",age=,address="东十路1号"},
new Student(){id=,name="李四",age=}
}; 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的更多相关文章

  1. C# 将list<>泛型集合 转化为 DataTable

    使用案例:将页面easy ui 中datagrid表格中的数据,存成json字符串, 通过ajax和ashx传入C#将string类型的json字符串解析成list<>泛型集合, 由于业务 ...

  2. 泛型集合转化为DataTable

    public class DataTableUtil { /// <summary> /// 泛型集合转化为dataTable /// </summary> /// <t ...

  3. 怎么使用Aspose.Cells读取excel 转化为Datatable

    说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...

  4. Xml转化为DataTable

    /// <summary> /// XML转换为DataTable /// </summary> /// <param name="fileName" ...

  5. DataSet转化为DataTable

    . DataTable dt = ds.Tables[]; . DataTable dt = dao.FillTables("GetOptions_DKI_City_HCPName" ...

  6. c# 多维数组、交错数组(转化为DataTable)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. MVC 之集合类转化为DataTable

    private static DataTable ToDataTableTow(IList list) { DataTable result = new DataTable(); if (list.C ...

  8. 使用WCF传输DataTable:DataTable和Xml格式的字符串相互转换(C#)

    背景:项目中要用到客户端向服务端传数据,使用WCF,绑定webHttpBinding,做了一个小例子. 业务逻辑简介:客户端在a表中添加了几条数据,从SQL Server数据库直接取出新添加的数据(D ...

  9. WPF中Grid绑定DataTable数据。

    1.首先引用DocumentFormat.OpenXml.dll 2.然后新建一个OpenExcelHelper类,将Excel转化为Datatable. /// <summary>    ...

随机推荐

  1. 【Cocos2d-html5】运动中速度效果

    在我们使用Action系统动作的时候,比如MoveTo,在进行运动的时候总是在规定的时间内进行匀速运动,有时候可能会想添加一些加速度的效果,cocos2d-html5就依然和cocos2dx一样为我们 ...

  2. 理解linux下的load

    我们在做Linux负载计算的时候,我们需要了解负载的几个概念 1)Linux负载是什么 2)Linux负载怎么计算 3)如何区分目前负载是“好”还是“坏” 4)什么时候应该注意哪些不正常的值   1) ...

  3. GTS-800二次开发基本流程总结

    1.打开控制器 GT_Open 2.启动伺服使能    GT_ClrSts 3.轴规划位置清零 GT_SetPrfPos 4.轴运动模式 GT_PrfTrap 5.轴目标位置 GT_SetPos 6. ...

  4. java中的\b是什么意思?

    java中有2个地方有\b,一个是特殊字符\b,另一个是在正则表达式中表示边界的意思. 我们这里只讨论特殊字符\b 我这里一共接受到几种解释: 1.退格符相当于键盘上的Backspace符号 back ...

  5. JS实现大整数乘法(性能优化、正负整数)

    本方法的思路为: 一:检查了输入的合法性(非空,无非法字符) 二:检查输入是否可以进行简单计算(一个数为 0,1,+1,-1) 三:去掉输入最前面可能有的正负符号,并判断输出的正负 四:将输入的值分成 ...

  6. ios 审核未通过 相机相册权限问题

    苹果提交审核被打回来  附加的说明如下: We noticed that your app requests the user’s consent to access their camera but ...

  7. python day21 ——面向对像-反射 getattr,内置方法

    一.反射:用字符串数据类型的变量名来访问这个变量的值 上代码^_^ # class Student: # ROLE = 'STUDENT' # @classmethod # def check_cou ...

  8. 如何在Linux下添加函数库

    如何为Linux增加库一. 静态库在Linux下的静态库是以.a为后缀的文件.1. 建静态库h1.c 源文件#include<stdio.h>void hello1(){printf(“t ...

  9. 软间隔分类——SVM

    引入:1. 数据线性不可分:2. 映射到高维依然不是线性可分3. 出现噪声.如图: 对原始问题变形得到#2: 进行拉格朗日转换: 其中α和r是拉格朗日因子,均有不小于0的约束.按照之前的对偶问题的推导 ...

  10. angular6新建项目

    mkdir  angular6project cd angular6project ng new demo      新建一个普通项目 ng new demo --routing  新建一个带路由的项 ...