文档章节

c# 反射得到实体类的字段名称和值,DataTable转List<T>

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 236
阅读 9
收藏 0
/// <summary>
/// 反射得到实体类的字段名称和值
/// var dict = GetProperties(model);
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="t">实例化</param>
/// <returns></returns>
public static Dictionary<object, object> GetProperties<T>(T t)
{
	var ret = new Dictionary<object, object>();
	if (t == null) { return null; }
	PropertyInfo[] properties = t.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);
	if (properties.Length <= 0) { return null; }
	foreach (PropertyInfo item in properties)
	{
		string name = item.Name;
		object value = item.GetValue(t, null);
		if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String"))
		{
			ret.Add(name, value);
		}
	}
	return ret;
}

//通过反射获取实体类 字段名和字段值
RBAC.Model.SY_ADMIN model = new RBAC.Model.SY_ADMIN();
var dict = GetProperties(model);
foreach (var item in dict)
{
	str += string.Format("{0}-----{1}<br/>", item.Key, item.Value);
}
/*         
            IList<Model1> t1 = DataTableToList<Model1>(dt);         
         */
        /// <summary>
        /// DataTable利用泛型填充实体类
        /// </summary>
        /// <typeparam name="T">实体类</typeparam>
        /// <param name="table">dt</param>
        /// <returns></returns>
        public static IList<T> DataTableToList<T>(DataTable table)
        {
            IList<T> list = new List<T>();
            T t = default(T);
            PropertyInfo[] propertypes = null;
            string tempName = string.Empty;
            foreach (DataRow row in table.Rows)
            {
                t = Activator.CreateInstance<T>();
                propertypes = t.GetType().GetProperties();
                foreach (PropertyInfo pro in propertypes)
                {
                    tempName = pro.Name;
                    if (table.Columns.Contains(tempName))
                    {
                        object value = MSCL.Until.IsNullOrDBNull(row[tempName]) ? null : row[tempName];
                        pro.SetValue(t, value, null);
                    }
                }
                list.Add(t);
            }
            return list;
        }


本文转载自:http://blog.csdn.net/smartsmile2012/article/details/53217777

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
List泛型与DataTable相互转换

public static class ExtensionMethods { /// /// 将List转换成DataTable /// /// /// /// public static DataTable ToDataTable(this IList data) { Proper...

岁月不改
2018/11/22
0
0
C#基础系列——反射笔记

前言:使用反射也有几年了,但是一直觉得,反这个概念很抽象,今天有时间就来总结下这个知识点。 1、为什么需要反射:   最初使用反射的时候,作为小菜总是不理解,既然可以通过new 一个对...

嗯哼9925
2017/11/28
0
0
C# NPOI数据导出到Excel之反射

  之前努力去理解过反射,但是项目中几乎用不到反射,所以对反射理解效果很差。正好最近做了一个类库,功能是将数据导出到Excel,里面用到了反射。我觉得这个是理解反射比较好的案例,所以...

FIGHTING360
2018/08/15
0
0
C#语法——反射,架构师的入门基础。

前言 编程其实就是写代码,而写代码目的就是实现业务,所以,语法和框架也是为了实现业务而存在的。因此,不管多么高大上的目标,实质上都是业务。 所以,我认为不要把写代码上升到科学的高度...

kiba518
2018/08/27
0
0
C# 反射入门知识

1、 什么是反射 2、 命名空间与装配件的关系 3、 运行期得到类型信息有什么用 4、 如何使用反射获取类型 5、 如何根据类型来动态创建对象 6、 如何获取方法以及动态调用方法 7、 动态创建委托...

老朱教授
2017/10/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Disable Autostart of MySQL Server on Ubuntu

OSC Markdown Editer 真香,笔记一篇,懒得转中文,如有表述问题,请不吝指出,先谢为敬! OS: Ubuntu 19.04 When the MySQL server is installed, it automatically started with the OS. I...

Iridium
8分钟前
0
0
OpenStack RDO + S3

Packstack(RDO) installation "sync db timeout" issue version: openstack-packstack-13.0.0-0.1.0rc1.el7.noarchopenstack-packstack-puppet-13.0.0-0.1.0rc1.el7.noarch add timeout =>......

Firxiao
10分钟前
0
0
java运算符的优先级

https://www.cnblogs.com/zjfjava/p/5996666.html

南桥北木
15分钟前
0
0
线性代数的静态观-向量空间(一)

向量是一个具有大小和方向的量,因此只要大小与方向相同则向量也相同,从而向量可以自由平行移动。 向量与点不同,它反映的是从A到B的位移(既包含位移的方向又包含位移的大小),而点仅仅是...

FAT_mt
16分钟前
0
0
Redis缓存穿透、缓存雪崩和缓存击穿

Redis缓存穿透、缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效。 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中...

architect刘源源
37分钟前
10
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部