• Datatable的操作方法


    DataTable操作相关内容:
    对DataTable 的一些操作在dataTable中最容易想到的是用for循环来操作,但事实不到万不得已是不会用for循环的,因为效率一般不高。
    1、 取行-取行一般用rowfilterDataTable datSource;//数据源表

    //过滤表
    DataView davTemp = newDataView(datSource, "过滤条件", "排序字段", DataViewRowState.各种 状态);
    //把过滤后的表赋给新表
    DataTable datNew = davTemp.ToTable(); 

    2、取表的某列或多列

    //数据源表:DataTable datSource;
    DataTable datNew= datSource.DefaultView.ToTable(false, new string[] { "列名", "列名" .....}); 

    3、复制某行的值前提是表结构或列数相同

    DataTable datSource;DataTable datNew;datSource.Rows[i].ItemArray= datNew. Rows[i].ItemArray; 

    4、表列数相同,但是却列名不同,想复制值的方法:既然列数相同,只是列名不同,改变列名 如下:

    DataTable datSource;
    DataTable datNew;
    datNew= datSource.Copy();
    datNew.Columns["FirstColumn"].ColumnName = "YourColumnName"; 

    //重命名列

    dt.Columns["num"].ColumnName = "xxx";

    5、调整列的位置SetOrdinal();

    DataTable dat = new DataTable();
    //添加三列
    dat.Columns.Add("col1");
    dat.Columns.Add("col2");
    dat.Columns.Add("col3");
    //添加一行数据
    dat.Rows.Add(1,2,3);
    //把第三列放到第一的位置    
    dt.Columns["col3"].SetOrdinal(0);
    //把第二列放在第三个位置
    dt.Columns["col2"].SetOrdinal(2);    
    //把第一列放在第二个位置
    dt.Columns["col1"].SetOrdinal(1);

    6、DatatableList

     调用此方法前,需要datatable列名和列数量与list中的实体类的字段名及数量相同

     public class DtToList<T> where T : new()  
        {
            /// <summary>
            /// datatable转list
            /// </summary>
            /// <param name="dt"></param>
            /// <returns></returns>
            public static  List<T> ConvertToModel(DataTable dt)
            {
    
                List<T> ts = new List<T>();// 定义集合
                Type type = typeof(T); // 获得此模型的类型
                string tempName = "";
                foreach (DataRow dr in dt.Rows)
                {
                    T t = new T();
                    PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
                    foreach (PropertyInfo pi in propertys)
                    {
                        tempName = pi.Name;
                        if (dt.Columns.Contains(tempName))
                        {
                            if (!pi.CanWrite) continue;
                            object value = dr[tempName];
                            if (value != DBNull.Value)
                                pi.SetValue(t, value, null);
                        }
                    }
                    ts.Add(t);
                }
                return ts;
            }
        }

    吆西吆西

  • 相关阅读:
    QTP自学攻略
    自动检查页面链接是否有效
    使用Loadrunner进行接口测试
    缺陷管理方案
    python读取文本、配对、插入数据脚本
    QTP 中对象操作
    python学习笔记(三)--条件语句
    npm WARN uninstall not installed in /Users/hrt0kmt/node_modules: "xxx"
    appium mac 下 安装及踩坑
    homebrew -v 或homebrew -doctor报错请检查 .bash_profile是否有误
  • 原文地址:https://www.cnblogs.com/zyg316/p/9450398.html
Copyright © 2020-2023  润新知