泛型转DataTable

public DataTable ToDataTable<TResult>(this IEnumerable<TResult> value) where TResult : class
{
//创建属性的集合
List<PropertyInfo> pList = new List<PropertyInfo>();
Type type = typeof(TResult);
DataTable dt = new DataTable();
Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name, p.PropertyType); });
foreach (var item in value)
{
//创建一个DataRow实例
DataRow row = dt.NewRow();
pList.ForEach(p => row[p.Name] = p.GetValue(item, null));
dt.Rows.Add(row);
}
return dt;
}

按着模型设置datatable

 public DataTable ConvertToDataTable<T>(List<ColunmData> colunmDatas, List<T> data)
{
var dataTable = new DataTable();
foreach (var it in colunmDatas)
{
dataTable.Columns.Add(new DataColumn(it.colunmEnglish, Type.GetType(it.dataType)));
}
DataColumnCollection colunms = dataTable.Columns;//datatable的属性值
//修改列属性
foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))// 获取泛型的属性值
{
if (colunms.Contains(pd.Name))//存在该字段就赋值
{
dataTable.Columns[pd.Name].DataType = pd.PropertyType;
}
}
foreach (T it in data)
{
DataRow Row = dataTable.NewRow();
foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))
{
if (colunms.Contains(pd.Name))//存在该字段就赋值
{
Row[pd.Name] = pd.GetValue(it);
}
}
dataTable.Rows.Add(Row);
}
return dataTable;
}

泛型和DataTable的属性的更多相关文章

  1. 机房重构——泛型和“DataTable”

    前言 我们都知道在机房重构的时候,大多数都在用七层进行重构,每一层都依赖实体.所以不管怎么调用,返回的应该是实体参数,这样才符合大多数的逻辑,这样我们试想一下,如果我们要求在U层返回多个实体值,怎么办 ...

  2. List,泛型和Datatable 的相互转换

    public static DataTable ToDataTableTow(IList list) { DataTable result = new DataTable(); ) { Propert ...

  3. Java泛型学习笔记--Java泛型和C#泛型比较学习(一)

    总结Java的泛型前,先简单的介绍下C#的泛型,通过对比,比较学习Java泛型的目的和设计意图.C#泛型是C#语言2.0和通用语言运行时(CLR)同时支持的一个特性(这一点是导致C#泛型和Java泛型 ...

  4. 泛型和 Any 类型

    泛型和 Any 类型 这两个类型看起来很相似,但是一定要小心两者的区别.他们区别在于 Any 类型会避开类型的检查,所以尽量少用最好不用.泛型一方面很灵活一方面也很安全,下面举个例子感受下两者的区别: ...

  5. java 泛型和object比较

    引言 我们使用object和泛型做形参,都是为了让这个方法能接收更多类型的对象,让程序变得更健壮,代码复用率更高.当我们回看自己写的代码时会发现,好像使用泛型的地方使用object也可以,使用obje ...

  6. C#的泛型和Java的伪泛型

    C#的泛型和java的伪泛型,talk is cheap,show me the code   C#泛型 下面结果,C#里面会输出false,如果这个还不能真正的说明C#的泛型是真的泛型,那就看下面这 ...

  7. DataTable的属性与使用方式

    一.DataTable简介 (1)构造函数            DataTable()   不带参数初始化DataTable 类的新实例.            DataTable(string t ...

  8. c# 泛型和IComparable<T>接口

    泛型 因为我们在编程中想先不定义数据类型,只想先写逻辑,就可以使用Object类型, 这样我们的逻辑就适用于所有类型,但是,在运行中,Object类型的变量会需要 转换到对应类型,浪费资源,所有出现泛 ...

  9. 基础篇:深入解析JAVA泛型和Type类型体系

    目录 1 JAVA的Type类型体系 2 泛型的概念 3 泛型类和泛型方法的示例 4 类型擦除 5 参数化类型ParameterizedType 6 泛型的继承 7 泛型变量TypeVariable ...

随机推荐

  1. fastadmin 后台管理中,权限设置,不同管理员,显示不同的数据

    1.https://doc.fastadmin.net/docs/controller.html

  2. R-CNN/Fast R-CNN/Faster R-CNN

    一.R-CNN 横空出世R-CNN(Region CNN,区域卷积神经网络)可以说是利用深度学习进行目标检测的开山之作,作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,2 ...

  3. linux shell中如何让$就表示为$呢?

    答: 在$前加转义符\ 如: \$

  4. MySQL 创建删除和选择数据库

    使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 删除数据库 drop database <数据库名>; 选择数据库 use 数据库名 Datab ...

  5. php操作成功返回当前页并刷新

    echo "<script>alert('操作成功');location.href='".$_SERVER["HTTP_REFERER"].&quo ...

  6. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_03-vuejs研究-vuejs基础-入门程序

    本次测试我们在门户目录中创建一个html页面进行测试,正式的页面管理前端程序会单独创建工程. 在门户目录中创建vuetest目录,并且在目录下创建vue_01.html文件 <!DOCTYPE ...

  7. django安装xadmin中出现的报错汇总

    报错一:ModuleNotFoundError: No module named 'django.core.urlresolvers' ModuleNotFoundError: No module n ...

  8. 1-3 RHEL7操作系统的安装

    RHEL7操作系统的安装 本节所讲内容: q  RHEL7.2操作系统的安装 第1章 RHEL7系统安装 1.1 安装软件准备: 需要的软件如下: Vmware workstation 12(含注册码 ...

  9. python进阶----logging模块

    在工作中经常要打印一些日志,下面介绍一下python中的logging模块 首先,先了解一下日志的级别,主要分为以下5种: debug      最低级别,一般开发用来打印一些调试信息 info    ...

  10. Flutter酷炫的路由动画效果

    现在Flutter的路由效果已经非常不错了,能满足大部分App的需求,但是谁不希望自己的App更酷更炫那,下面介绍几个酷炫的路由动画. 其实路由动画的原理很简单,就是重写并继承PageRouterBu ...