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

吆西吆西

原文地址:https://www.cnblogs.com/zyg316/p/9450398.html