C# 数据表(DataTable)用法
				
									
					
					
						|  | 
							admin 2025年7月14日 23:20
								本文热度 1165 | 
					
				 
				ataTable 是一种常见的数据结构,用于以表格形式存储和操作数据。以下是 DataTable 的主要用法介绍:(1)创建DataTable;
(2)复制表;
(3)视图排序;
(4)DataTable查询:查询返回DataRow、DataTable、查询某行数据、查询某列数据、查询单元格数据
(5)DataTable行列转换:列转换行,行转换列;
(6)结构List转换为DataTable:结构List通用转换为DataTable方法;
public DataTable GetTestDataList(int RowNum = 10){    DataTable dt = new DataTable("TableName");    dt.Columns.Add("Id", Type.GetType("System.Int32"));    dt.Columns.Add("Mark", Type.GetType("System.String"));    dt.Columns.Add("IsCheck", Type.GetType("System.Boolean"));    for (int i = 0; i < RowNum; i++)    {        DataRow dr = dt.NewRow();        dr["Id"] = i + 1;        dr["Mark"] = "Value" + i.ToString();        dr["IsCheck"] = i % 2 > 0 ? true : false;        dt.Rows.Add(dr);    }    return dt;}
DataTable NewDt1=GetTestDataList();
DataTable NewDt2 = dt.Copy();
DataTable NewDt3 = dt.Copy();NewDt3.Clear();
DataTable NewDt4 = dt.Clone();
DataView dv = dt.DefaultView;dv.Sort = "Id asc";DataTable dataView = dv.ToTable();
string strWhere = "Id>=5 and Id<>6";
DataRow[] SelectDr = SelectDataTable(dt, strWhere, "Id asc");  
public DataRow[] SelectDataTable(DataTable dt, string szSelect, string storStr = ""){    DataRow[] DataRows = null;    if (string.IsNullOrEmpty(storStr))        DataRows = dt.Select(szSelect);    else        DataRows = dt.Select(szSelect, storStr);    return DataRows;}
DataTable SelectDt = SelectNewDataTable(dt, strWhere, "Id desc");
public DataTable SelectNewDataTable(DataTable dt, string szSelect, string sortstr = ""){    DataTable newdt = new DataTable();    newdt = dt.Clone();    DataRow[] dr = dt.Select(szSelect, sortstr);
    if (dr == null || dr.Length == 0) return null;    for (int i = 0; i < dr.Length; i++)    {        newdt.ImportRow((DataRow)dr[i]);    }    return newdt;}
List<string> ListDataA = GetDataTableRowList(dt, 3);
public List<string> GetDataTableRowList(DataTable dt, int RowIndex){    List<string> RetList = new List<string>();    if (dt == null || dt.Rows.Count == 0) return null;    if (RowIndex > dt.Rows.Count) return null;    for (int i = 0; i < dt.Columns.Count; i++)    {        RetList.Add(dt.Rows[RowIndex][i].ToString());    }    return RetList;}
List<string> ListDataB = GetDataTableColumnList(dt, 5);
public List<string> GetDataTableColumnList(DataTable dt, int ColumnIndex){    List<string> RetList = new List<string>();    if (dt == null || dt.Rows.Count == 0) return null;    if (ColumnIndex > dt.Columns.Count) return null;    for (int i = 0; i < dt.Rows.Count; i++)    {        RetList.Add(dt.Rows[i][ColumnIndex].ToString());    }    return RetList;}
string RetValue = GetDataTableCellValue(dt, 3, 5);
public string GetDataTableCellValue(DataTable dt, int RowIndex, int ColumnIndex){    string RetValue = "";    if (dt == null || dt.Rows.Count == 0) return null;    if (RowIndex > dt.Rows.Count) return null;    if (ColumnIndex > dt.Columns.Count) return null;    RetValue = dt.Rows[RowIndex][ColumnIndex].ToString();    return RetValue;}
DataTable Dt1 = TransRowToCol(dt);
public DataTable TransRowToCol(DataTable dt){    DataTable RetDt = new DataTable();    if (dt == null || dt.Rows.Count == 0 || dt.Columns.Count == 0) return null;    for (int i = 0; i < dt.Rows.Count + 1; i++)    {        DataColumn dc = new DataColumn();        dc.ColumnName = string.Format("C{0}", i);        RetDt.Columns.Add(dc);    }    for (int i = 0; i < dt.Columns.Count; i++)    {        List<string> DataList = GetDataTableColumnList(dt, i);        DataList.Insert(0, dt.Columns[i].ColumnName);        DataRow dr = RetDt.NewRow();        for (int j = 0; j < DataList.Count; j++)        {            dr[j] = DataList[j];        }        RetDt.Rows.Add(dr);    }    return RetDt;}
DataTable Dt2 = TransColToRow(Dt1);
public DataTable TransColToRow(DataTable dt){    DataTable RetDt = new DataTable();    if (dt == null || dt.Rows.Count == 0 || dt.Columns.Count == 0) return null;
        List<string> FirstColumnsList = GetDataTableColumnList(dt, 0);    for (int i = 0; i < FirstColumnsList.Count; i++)    {        DataColumn dc = new DataColumn();        dc.ColumnName = FirstColumnsList[i];        RetDt.Columns.Add(dc);    }
        for (int i = 1; i < dt.Columns.Count; i++)    {        List<string> DataList = GetDataTableColumnList(dt, i);        DataRow dr = RetDt.NewRow();        for (int j = 0; j < DataList.Count; j++)        {            dr[j] = DataList[j];        }        RetDt.Rows.Add(dr);    }    return RetDt;}
public class Student{    public string Name { get; set; }    public int Age { get; set; }    public string Sex { get; set; }}
List<Student> stuList = new List<Student>();stuList.Add(new Student() { Name = "小明", Age = 18, Sex = "M" });stuList.Add(new Student() { Name = "小红", Age = 19, Sex = "S" });DataTable Dt3 = ListToDataTable<Student>(stuList);
public DataTable ListToDataTable<T>(IEnumerable<T> collection){    var props = typeof(T).GetProperties();    var dt = new DataTable();    dt.Columns.AddRange(props.Select(p => new    DataColumn(p.Name, p.PropertyType)).ToArray());    if (collection.Count() > 0)    {        for (int i = 0; i < collection.Count(); i++)        {            ArrayList tempList = new ArrayList();            foreach (PropertyInfo pi in props)            {                object obj = pi.GetValue(collection.ElementAt(i), null);                tempList.Add(obj);            }            object[] array = tempList.ToArray();            dt.LoadDataRow(array, true);        }    }    return dt;}
阅读原文:原文链接
该文章在 2025/7/15 9:33:34 编辑过