将一个对象相同的属性(不区分大小写)赋值给一个新对象 DataTable的一个简单的扩展
将一个对象相同的属性(不区分大小写)赋值给一个新对象

1 public static T Mapper<S, T>(S source)
2 {
3 T t = Activator.CreateInstance<T>();
4 try
5 {
6 var s_type = source.GetType();
7 var t_type = typeof(T);
8 foreach (PropertyInfo sp in s_type.GetProperties())
9 {
10 foreach (PropertyInfo dp in t_type.GetProperties())
11 {
12 if (dp.Name.ToUpper() == sp.Name.ToUpper())
13 {
14 dp.SetValue(t, sp.GetValue(source, null), null);
15 }
16 }
17 }
18 }
19 catch (Exception ex)
20 {
21 throw ex;
22 }
23 return t;
24 }

DataTable的一个简单的扩展
我们在调试代码的时候经常遇到DataTable的数据类型错误,这个类可以帮助我们很快查看DataTable的结构信息.

1 /// <summary>
2 /// DataTable扩展类
3 /// </summary>
4 public static class DataTableExtensions
5 {
6 /// <summary>
7 /// 显示DataTable的结构信息
8 /// </summary>
9 /// <param name="table">datatable</param>
10 public static void LoadDataTableStructure(this DataTable table)
11 {
12 if (table == null)
13 {
14 System.Diagnostics.Debug.WriteLine("datatable is null.");
15 }
16
17 StringBuilder structureInfo = new StringBuilder();
18 string colName = string.Empty;
19 string colType = string.Empty;
20
21 structureInfo.AppendLine("============================Begin=============================");
22 structureInfo.AppendLine("TableName: " + table.TableName);
23 structureInfo.AppendLine(string.Format("{0,-20}{1}", "ColumnName", "DataType"));
24
25 foreach (DataColumn col in table.Columns)
26 {
27 colName = col.ColumnName;
28 colType = col.DataType.ToString();
29 structureInfo.AppendLine(string.Format("{0,-20}{1}", colName, colType));
30 }
31
32 structureInfo.AppendLine("=============================End==============================");
33 System.Diagnostics.Debug.WriteLine(structureInfo.ToString());
34 }
35 }

将一个对象相同的属性(不区分大小写)赋值给一个新对象 DataTable的一个简单的扩展的更多相关文章
- C++ //拷贝构造函数调用时机//1.使用一个已经创建完毕的对象来初始化一个新对象 //2.值传递的方式给函数参数传值 //3.值方式返回局部对象
1 //拷贝构造函数调用时机 2 3 4 #include <iostream> 5 using namespace std; 6 7 //1.使用一个已经创建完毕的对象来初始化一个新对象 ...
- java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。
今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...
- Object.create 以原对象为原型创建一个新对象
Object.create = function(o){ var Fun = function(){}; Fun.prototype = o; return new Fun(); } var peo ...
- c#判断两个对象和对象中的属性是否相同(以及记录对象中的哪些字段,和详细的改变情况)
当前项目需要记录变更记录,即用户在进行编辑后,将变更操作记录下来.但是数据没有发生变化,则不记录. 代码1:(仅仅返回是否变化的标识) /// <summary> /// 反射对比实体属性 ...
- JS属性描述符之Object.defineProperty()定义对象属性特性
一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...
- Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, ...
- 对象的constructor属性
对象的constructor属性, 最初是用来标识对象类型的. 比如 ,我们定义一个 Person类,然后实例化两个对象. function Person(name, age, job){this.n ...
- python-面向对象-06_私有属性和私有方法
私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私 ...
- js中常用的对象—Array的属性和方法
今天说一下,js中常用的内置对象——Array对象 Array常用属性: length prototype :给系统对象添加属性和方法 Array常用方法: Array.prototype.sum = ...
随机推荐
- 通过机智云APP来学习安卓
效果非常之好,安卓6.0之后就进行了动态授权.按照网上的视频一步一步调试的非常成功,非常舒服.
- EditPlus里面自带有更改文件编码的功能
- IDEA提示 found duplicate code
原因: IntelliJ IDEA提示Found duplicated code in this file 这不是我们代码错误,而是idea提示说我们的代码有重复,在项目的其他地方有同样的代码片段 解 ...
- JPQL 模糊查询,查询条件拼接(like使用)
@Transactional public List<ViewCorplist2> findAllCorpsLikeK(String kw) { System.out.println(kw ...
- Windows提高_2.2第二部分:用户区同步
第二部分:用户区同步 同步和互斥 同步:就是按照一定的顺序执行不同的线程 互斥:当一个线程访问某一资源的时候,其它线程不能同时访问 多线程产生的问题 #include <stdio.h> ...
- Java之希尔排序
希尔排序 前面已经知道了插入排序,明白插入排序的原理,不断比较来交换相邻的元素,这样的话效率不高,为此希尔排序,在插入排序上做出了改进,通过间隔增量来比较并交换元素,这样可以减少比较交换的次数. pa ...
- 2019西安多校联训 Day4
T1 大水题!!难度简单,显然的贪心策略即可,but... 思路:首先我们按与i点作战后活下来的士兵排序,然后 若当前剩余兵力足够直接减掉战斗死亡人数,如果不够就加 够再打它,但是!我们在考完试观察测 ...
- (2) GoJS Node简介
node GoJS提供了非常简单的创建Node节点的方法,可将文本内容.结点形状.背景颜色.边距等属性通过数据绑定[go.Binding]直接绑定到对应的Node数据中. 本文简单介绍Node的创建过 ...
- [Algorithm] 6. Merge Two Sorted Arrays
Description Merge two given sorted integer array A and B into a new sorted integer array. Example A= ...
- JDK的下载---官方
1.去到官方网站 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 根据箭头选择, ...