C# 数据表(DataTable)用法
|
admin
2025年7月14日 23:20
本文热度 113
|
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 编辑过