• 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;
            }
        }

    吆西吆西

  • 相关阅读:
    Flex弹性盒模型
    响应式布局rem的使用
    京东首页如何实现pc端和移动端加载不同的html的?
    canvas绘制表盘时钟
    javascript实现ul中列表项随机排列
    使用 HTML5 视频事件
    Javascript获取当前鼠标在元素内的坐标定位
    移动 web 开发问题和优化小结
    关于fisher判别的一点理解
    机器学习第三课(EM算法和高斯混合模型)
  • 原文地址:https://www.cnblogs.com/zyg316/p/9450398.html
Copyright © 2020-2023  润新知