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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

吆西吆西


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM