C# 数据表(DataTable)用法
|
admin
2025年7月20日 21:53
本文热度 1142
|
DataTable 是一种常见的数据结构,用于以表格形式存储和操作数据。以下是 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/21 10:27:41 编辑过