给DataTable添加列

  1. string sql = "select * from cgpmb order by code";
  2. DataTable dt = Bobole.Data.OracleDataRegester.GetListBySql(sql).Tables[];
  3. dt.Columns.Add("PCode", typeof(string));   //假如数据库查询出来的DataTable没有你想要的列 Remove("")可以删除列
  4. for (int i = ; i < dt.Rows.Count; i++)
  5. {
  6. try
  7. {
  8. dt.Rows[i]["PCode"] = dt.Rows[i]["Code"].ToString().Remove(dt.Rows[i]["Code"].ToString().Length - , );
  9. }
  10. catch (Exception)
  11. {
  12. dt.Rows[i]["PCode"] = "";
  13. }
  14. }

将DataTable转化为list泛型集合

  1. public static List<T> TableToList<T>(DataTable dt, bool isStoreDB = true)
  2. {
  3. List<T> list = new List<T>();
  4. Type type = typeof(T);
  5. //List<string> listColums = new List<string>();
  6. PropertyInfo[] pArray = type.GetProperties(); //集合属性数组
  7. foreach (DataRow row in dt.Rows)
  8. {
  9. T entity = Activator.CreateInstance<T>(); //新建对象实例
  10. foreach (PropertyInfo p in pArray)
  11. {
  12. if (!dt.Columns.Contains(p.Name) || row[p.Name] == null || row[p.Name] == DBNull.Value)
  13. {
  14. continue; //DataTable列中不存在集合属性或者字段内容为空则,跳出循环,进行下个循环
  15. }
  16. if (isStoreDB && p.PropertyType == typeof(DateTime) && Convert.ToDateTime(row[p.Name]) < Convert.ToDateTime("1753-01-01"))
  17. {
  18. continue;
  19. }
  20. try
  21. {
  22. var obj = Convert.ChangeType(row[p.Name], p.PropertyType);//类型强转,将table字段类型转为集合字段类型
  23. p.SetValue(entity, obj, null);
  24. }
  25. catch (Exception)
  26. {
  27. // throw;
  28. }
  29. }
  30. list.Add(entity);
  31. }
  32. return list;
  33. }

将list泛型集合转化为DataTable

  1. /// <summary>
  2. /// 转化一个DataTable
  3. /// </summary>
  4. /// <typeparam name="T"></typeparam>
  5. /// <param name="list"></param>
  6. /// <returns></returns>
  7. private static System.Data.DataTable ToDataTable<T>(IEnumerable<T> list)
  8. {
  9. //创建属性的集合
  10. List<PropertyInfo> pList = new List<PropertyInfo>();
  11. //获得反射的入口
  12. Type type = typeof(T);
  13. System.Data.DataTable dt = new System.Data.DataTable();
  14. //把所有的public属性加入到集合 并添加DataTable的列
  15. Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name, p.PropertyType); });
  16. foreach (var item in list)
  17. {
  18. //创建一个DataRow实例
  19. DataRow row = dt.NewRow();
  20. //给row 赋值
  21. pList.ForEach(p => row[p.Name] = p.GetValue(item, null));
  22. //加入到DataTable
  23. dt.Rows.Add(row);
  24. }
  25. return dt;
  26. }

C#;DataTable添加列;DataTable转List泛型集合;List泛型集合转DataTable泛型集合;的更多相关文章

  1. 新建DataTable添加列添加行

    新建空Table添加行和列 DataTable dt = new DataTable(); //创建空DataTable 1.添加列 dt.Columns.Add("序号", ty ...

  2. DataTable添加列和行的三种方法

    JRoger 原文 #region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc ...

  3. [.Net] DataTable添加列和行的三种方法

    #region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc = tblData ...

  4. C# Datatable 添加列

    DataTable dt = new DataTable("Datas"); DataColumn dc = null; //dt新增列 dc=dt.Columns.Add(&qu ...

  5. JSF dataTable 添加列 动态创建数据表 列

    @Named @ViewScoped public class LiveRangeService implements Serializable { private List< Map<S ...

  6. asp.net dataTable添加列

    DataTable dtNew = new DataTable(); dtNew.Columns.Add("ItemNo");//序列号列 dtNew.Columns.Add(&q ...

  7. datatable 添加列之前判断是否存在该列

    if (!dt.Columns.Contains("BDate")) { DataColumn dc1 = new DataColumn("BDate", ty ...

  8. C#DataTable添加列、C#指定位置添加列

    DataSet ds = SQlHelper.GetDataTable(Con, sb.ToString()); ds.Tables[].Columns.Add("Check", ...

  9. DataTable添加行和列

    tablenullobjectdatasetc#c 手动插入一行数据 DataSet ds = tTalent.GetAllInfo();         DataRow dr = ds.Tables ...

随机推荐

  1. PTA L2-4 关于堆的判断

    先上题面 链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888 首先,题目描述的很清楚,这是 ...

  2. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  3. 下载python包

    修改pip下载源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider 更新pip版本 python -m pip inst ...

  4. String对象的属性和方法

    String对象的属性和方法   创建字符串的两种方法: 1.直接量:var str = ""; 2.字符串对象创建: new String(""); Stri ...

  5. 移除元素-leetcode-27

    class Solution {public:    int removeElement(vector<int>& nums, int val) {        if(nums. ...

  6. js比较洋气的写法

    案例一:使用js的构造方法生成js对象.给该对象赋属性值或function 案例二:使用json的代码风格,完成同样的功能. <!DOCTYPE html> <html> &l ...

  7. Python 汉诺塔

    在汉诺塔游戏中,有三个分别命名为A.B.C得塔座,几个大小各不相同,从小到大一次编号得圆盘,每个原盘中间有一个小孔.最初,所有得圆盘都在A塔座上,其中最大得圆盘在最下面,然后是第二大,以此类推. 游戏 ...

  8. SQLServer 关于 HAVING子句

    使用HAVING子句求众数 示例表 1.使用谓词 2.使用极值函数 (思考,在条件中存在聚合函数时,不可使用where,需要使用having) 使用HAVING子句求中数

  9. ios-时间换算

    经常会遇到时间转换的,在此收藏一个时间换算的方法〜 #pragma mark 时间换算 + (NSString *)setcreateTime:(NSString *)str { //yyyy-MM- ...

  10. [R] [Johns Hopkins] R Programming -- week 4

    #Generating normal distribution (Pseudo) random number x<-rnorm(10) x x2<-rnorm(10,2,1) x2 set ...