代码:

        //这样写的话,输入的是表的行对象,返回的是数据字典,可以直接用到更新操作里,public static Object AlterDate(Object tabledataobj){List<string> namelist = new List<string>();List<Object> valuelist = new List<object>();Type t = tabledataobj.GetType();foreach (PropertyInfo pi in t.GetProperties()){if (pi.Name == "id"){ }else{Object value = pi.GetValue(tabledataobj);if (value != null){namelist.Add(pi.Name);valuelist.Add(value);}}}Dictionary<string, object> temp = new Dictionary<string, object>();for (int i = 0; i < namelist.Count; i++){temp.Add(namelist[i], valuelist[i]);}temp.Add("updateTime", DateTime.Now);return temp;}//用到更新操作里,参考如下:var dic = new Dictionary<string, string>();dic.Add("name", "第十三条");dic.Add("areaId", "1");db.Update<School, int>(dic, 13);或:Object obj = AlterTable.AlterDate(dt);……var result = db.Update<t_customer,int>(obj,cusid);//方法重载,只有第二个参数里包含的字段才能进行修改public static Object AlterDate(Object tabledataobj,List<string> modifiableField){List<string> namelist = new List<string>();List<Object> valuelist = new List<object>();Type t = tabledataobj.GetType();foreach (PropertyInfo pi in t.GetProperties()){if (pi.Name == "id"){ }else{if (modifiableField.Contains(pi.Name)){Object value = pi.GetValue(tabledataobj);if (value != null){namelist.Add(pi.Name);valuelist.Add(value);}}}}Dictionary<string, object> temp = new Dictionary<string, object>();for (int i = 0; i < namelist.Count; i++){temp.Add(namelist[i], valuelist[i]);}temp.Add("updateTime", DateTime.Now);return temp;}//这样写的话,后面表示的是动态的的生成对象,并且动态的给对象添加属性public static Object AlterDate(Object tabledataobj){List<string> namelist = new List<string>();List<Object> valuelist = new List<object>();Type t = tabledataobj.GetType();foreach (PropertyInfo pi in t.GetProperties()){if (pi.Name == "id"){ }else{Object value = pi.GetValue(tabledataobj);if (value != null){namelist.Add(pi.Name);valuelist.Add(value);}}}Dictionary<string, object> temp = new Dictionary<string, object>();for (int i = 0; i < namelist.Count; i++){temp.Add(namelist[i], valuelist[i]);}temp.Add("updateTime", DateTime.Now);dynamic result = new System.Dynamic.ExpandoObject();foreach (KeyValuePair<string, object> item in temp){((IDictionary<string, object>)result).Add(item.Key, item.Value);}return result;}

// 另一种方式ExpandoObject 类,“需引用System.Dynamic命名空间” 

dynamic person = new ExpandoObject();

person.Name = "cary";

person.Age = 25;

person.ShowDescription = new Func<string>(() => person.Name + person.Age);

Console.WriteLine(person.Name+person.Age+person.ShowDescription());

Console.ReadLine();

 

转载于:https://www.cnblogs.com/zhangchaoran/p/7521185.html

修改数据表部分字段方法封装-及-动态生成对象并动态添加属性相关推荐

  1. MySQL修改数据表中的字段名

    MySQL修改数据表中的字段名 在一张数据表中只能设置一个唯一名称的字段名.在同一张数据表中,不能出现两个名称完全相同的字段名. 因此,数据库系统可以通过字段名来区分数据表中的不同字段. 在MySQL ...

  2. mysql授权 改表_mysql开启远程登陆(修改数据表和授权两种方法)

    一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 ...

  3. 【Oracle】修改数据表名、字段名

    修改字段类型: alter table 表名 modify(字段 varchar2(255)); 修改字段名: alter table 表名 rename column 原字段名 to 新字段名; 修 ...

  4. mysql后台修改表_mysql之约束以及修改数据表

    数据约束的分类: ---------------------------------------------------- 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ...

  5. MySQL学习笔记-约束以及修改数据表

    MySQL学习笔记-约束以及修改数据表 约束: 按功能划为: NOT NULL , PRIMARY KEY , UNIQUE KEY , DEFAULT , FOREIGN KEY 按数据列的数目划为 ...

  6. 了解什么是数据库、数据表、字段、等概念

    标题:了解什么是数据库.数据表.字段.等概念 (1)数据库:数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合 ...

  7. mysql所有的编码_MySQL 批量修改数据表编码及字符集

    当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改.以下备注批量修改方案( 以修改为 utf8mb4_bin 为例,注意将 db_name 换为真实的数据库名 ). 1. ...

  8. Oracle 创建数据表以及对数据表、字段、主外键、约束的操作

    选择主键的原则: 最少性 尽量选择使用单个键作为主键 稳定性 尽量选择数值更新少的列作为主键 1.创建数据表(CREATE TABLE) --创建数据表Student create table Stu ...

  9. MySQL学习笔记 约束以及修改数据表

    *** 约束保证数据的完整性和一致性 *** 约束分为表级约束和列级约束 *** 约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNIQUE KEY(唯一约束) D ...

最新文章

  1. Spring Cloud Stream消费失败后的处理策略(二):自定义错误处理逻辑
  2. VTK:Qt之ShowEvent
  3. ubuntu19.10锁屏时间调节
  4. 如何使用 Node.js 访问 SAP HANA Cloud 数据库里的数据
  5. python天天向上续2_2019/2/12 Python今日收获
  6. ik分词器 mysql php_php环境下使用elasticSearch+ik分词器进行全文搜索
  7. 定制化你的ReactNative底部导航栏
  8. ICLR2020 | 如何判断两个神经网络学到的知识是否一致
  9. mongodb php代码实例,php操作mongoDB实例分析
  10. Team Foundation Server 2010 安装、部署与配置(六):创建 Team Project .
  11. WEBSOCKET协议判断 握手及反馈
  12. JVM系列(之class文件)
  13. win10下Redis安装、启动教程
  14. python workflow_用 Python 写 Alfred3 workflow 插件,一个最小示例
  15. ArcGIS10.8安装(附最新<2022年10月29日>下载地址)
  16. 计算机网络——网络安全
  17. 谷歌浏览器屏蔽百度热点搜索
  18. 【技术分享】ApolloEDU6.0+LGSVL联合仿真环境搭建
  19. LeetCode 37. 解数独 Sudoku Solver
  20. 猛兽来袭——Integral Protocol

热门文章

  1. c语言判断一个序列是不是另一个的子序列
  2. 软考考前冲刺第十三章UML建模
  3. POJ2115 C Looooops(线性同余方程)
  4. 安装openssl-devel命令
  5. Ubuntu16.04 开启多个终端,一个终端多个小窗口
  6. 新版 Android 已支持 FIDO2 标准,免密登录应用或网站
  7. JNI通过线程c回调java层的函数
  8. [TODO]Python拾遗(三)
  9. 演示:Linux工程环境应用实训(防火墙、NAT、静态路由)详细配步骤
  10. JQuery 对控件的事件操作