C# DataTable的详细用法分享
什么是DataTable
DataTable是ADO.NET数据组件中的一种对象,用于表示一张数据表,可以通过创建Columns属性和Rows属性来存储数据。DataTable可以被当成是一个内存中的关系型数据表。
如何创建DataTable
可以通过创建DataTable实例,并添加列和行来创建DataTable对象。
DataTable dt = new DataTable("myTable");
// 添加列
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("Age", typeof(int)));
// 添加行
DataRow dr = dt.NewRow();
dr["ID"] = 1;
dr["Name"] = "Tom";
dr["Age"] = 20;
dt.Rows.Add(dr);
如何访问DataTable中的数据
可以通过Columns属性获取DataTable中的列信息,通过Rows属性获取DataTable中的行信息,通过指定列名和行索引获取单元格中的值。
// 获取指定列的信息
foreach(DataColumn col in dt.Columns)
{
Console.WriteLine("ColumnName:{0} DataType:{1}", col.ColumnName, col.DataType);
}
// 获取指定行的信息
foreach(DataRow row in dt.Rows)
{
Console.WriteLine("ID:{0} Name:{1} Age:{2}", row["ID"], row["Name"], row["Age"]);
}
// 获取指定单元格的值
Console.WriteLine("Name:{0}", dt.Rows[0]["Name"]);
如何对DataTable进行操作
可以通过以下的方法对DataTable进行操作:
增
可以通过创建新的行并添加到Rows中来实现增加数据。
// 创建新行并添加到DataTable中
DataRow newRow = dt.NewRow();
newRow["ID"] = 2;
newRow["Name"] = "Jerry";
newRow["Age"] = 22;
dt.Rows.Add(newRow);
删
可以通过移除Rows中的行来实现删除数据。
// 根据行索引移除行
dt.Rows.RemoveAt(0);
// 根据条件删除行
foreach(DataRow row in dt.Rows)
{
if((int)row["Age"] < 18)
{
dt.Rows.Remove(row);
}
}
改
可以通过直接对Rows中的值进行修改来实现修改数据。
// 直接修改
dt.Rows[0].SetField("Name", "Scott");
// 循环修改
foreach(DataRow row in dt.Rows)
{
row.SetField("Age", (int)row["Age"] + 1);
}
查
可以通过Select方法实现查找符合条件的行,并返回一个新的DataTable。
// 找到年龄大于20的行
DataTable newDt = dt.Select("Age > 20").CopyToDataTable();
示例1
以下是一个简单的示例,演示如何创建、访问和操作一个DataTable对象。
// 创建DataTable并添加列
DataTable dt = new DataTable("myTable");
dt.Columns.Add(new DataColumn("ID", typeof(int)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("Age", typeof(int)));
// 创建新行并添加到DataTable中
DataRow newRow = dt.NewRow();
newRow["ID"] = 1;
newRow["Name"] = "Tom";
newRow["Age"] = 20;
dt.Rows.Add(newRow);
// 打印出DataTable中的信息
foreach(DataColumn col in dt.Columns)
{
Console.WriteLine("ColumnName:{0} DataType:{1}", col.ColumnName, col.DataType);
}
foreach(DataRow row in dt.Rows)
{
Console.WriteLine("ID:{0} Name:{1} Age:{2}", row["ID"], row["Name"], row["Age"]);
}
// 添加一条新的记录
DataRow newRow2 = dt.NewRow();
newRow2["ID"] = 2;
newRow2["Name"] = "Jerry";
newRow2["Age"] = 22;
dt.Rows.Add(newRow2);
// 修改一条记录
dt.Rows[0].SetField("Name", "Scott");
// 删除一条记录
dt.Rows.RemoveAt(1);
// 找到年龄大于20的记录
DataTable newDt = dt.Select("Age > 20").CopyToDataTable();
foreach(DataRow row in newDt.Rows)
{
Console.WriteLine("ID:{0} Name:{1} Age:{2}", row["ID"], row["Name"], row["Age"]);
}
示例2
以下是一个示例,演示如何通过读取CSV文件内容,创建DataTable。
// 读取CSV文件内容
string[] lines = File.ReadAllLines(@"C:\temp\data.csv");
// 创建DataTable并添加列
DataTable dt = new DataTable("myTable");
string[] columnNames = lines[0].Split(',');
foreach(string columnName in columnNames)
{
dt.Columns.Add(new DataColumn(columnName, typeof(string)));
}
// 添加数据
for(int i = 1; i < lines.Length; i++)
{
string[] values = lines[i].Split(',');
DataRow newRow = dt.NewRow();
for(int j = 0; j < columnNames.Length; j++)
{
newRow[columnNames[j]] = values[j];
}
dt.Rows.Add(newRow);
}
// 打印出DataTable中的信息
foreach(DataColumn col in dt.Columns)
{
Console.WriteLine("ColumnName:{0} DataType:{1}", col.ColumnName, col.DataType);
}
foreach(DataRow row in dt.Rows)
{
Console.WriteLine("ID:{0} Name:{1} Age:{2}", row["ID"], row["Name"], row["Age"]);
}
以上是C# DataTable的详细用法分享的完整攻略,希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# DataTable的详细用法分享 - Python技术站