C# DataTable的详细用法分享

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技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 垃圾代码二三行 ASPX小马

    攻击者可以通过嵌入”垃圾代码”来在服务器上运行恶意代码,从而达到控制服务器的目的。其中,”垃圾代码二三行 ASPX小马”是一种常见的攻击手段,本文将对其进行详细讲解。 什么是”垃圾代码二三行 ASPX小马” “垃圾代码二三行 ASPX小马”是指攻击者将一小段ASP.NET代码嵌入到页面中,通过这段代码来加载运行ASPX小马,从而达到控制服务器的目的。 攻击步…

    C# 2023年5月31日
    00
  • C# ComboBox的联动操作(三层架构)

    完整攻略 首先,针对C# ComboBox的联动操作,我们需要使用三层架构的思想进行设计。 三层架构分别为: 表现层(Presentation Layer):用户界面(界面层)。 业务逻辑层(Business Logic Layer):负责业务逻辑的处理。 数据访问层(Data Access Layer):与数据存储的交互。 接下来,我们按照以下步骤进行: …

    C# 2023年6月1日
    00
  • asp.net(c#)限制用户输入规定的字符和数字的代码

    ASP.NET(C#)限制用户输入规定的字符和数字是一种常见的输入检查要求。可以通过正则表达式在前端或后端实现此功能。本文将介绍如何在 ASP.NET(C#) 中使用正则表达式限制用户输入规定的字符和数字,包括过程和示例。 步骤一:导入正则表达式命名空间 正则表达式命名空间是 System.Text.RegularExpressions。在 C# 应用程序中…

    C# 2023年5月31日
    00
  • asp.net php asp jsp 301重定向的代码(集合)

    下面是详细讲解“asp.net php asp jsp 301重定向的代码(集合)”的完整攻略: 什么是301重定向? 301重定向是将一个URL的请求永久性转移到另一个URL的过程。它通常用于网站改版或重构时,将旧的不再使用的URL地址重定向到新的页面地址,不影响用户体验,同时也有利于搜索引擎的优化。 asp.net实现301重定向的代码 在asp.net…

    C# 2023年5月31日
    00
  • ASP.NET MVC5网站开发用户登录、注销(五)

    ASP.NET MVC 5是一种基于模型-视图-控制器(MVC)模式构建Web应用程序的框架。本文将详细讲解如何在ASP.NET MVC 5网站开发中实现用户登录和注销功能。 步骤一:创建用户登录和注销的Action方法 要实现用户登录和注销功能,需要在控制器中创建Action方法。在ASP.NET MVC 5中,可以使用内置的身份验证特性来验证用户是否已经…

    C# 2023年6月3日
    00
  • ajax调用中ie缓存问题解决方法

    在Ajax调用中,IE浏览器可能会缓存先前的响应,导致无法获取最新的数据。本文将提供解决IE缓存问题的完整攻略,包括问题原因、解决方案和示例。 问题原因 当使用Ajax调用从服务器获取数据时,IE浏览器可能会缓存先前的响应。这是因为IE浏览器默认情况下会缓存GET请求的响应,以提高性能。但是,如果响应数据经常更改,就需要获取最新的数据,而不是缓存的数据。 解…

    C# 2023年5月15日
    00
  • C# 中的”智能枚举”之如何在枚举中增加行为(示例代码)

    在 C# 中的智能枚举是指使用 C# 的枚举类型 Enum,通过使用扩展方法,在枚举类型中增加行为方法,从而提高代码的可读性和可维护性。下面我们来详细讲解如何在枚举中增加行为。 1.枚举类型定义 在开始之前,我们先定义一个示例的枚举类型,如下所示: public enum LanguageType { [Description("C#")…

    C# 2023年6月6日
    00
  • ASP.NET:一段比较经典的多线程学习代码

    ASP.NET中的多线程编程可以极大地提高代码的执行效率,下面我将为大家讲解一段经典的多线程学习代码。这段代码涉及到了创建多个线程、线程之间的同步以及线程池等多个方面。 代码示例 下面是一个简单的多线程示例,该示例创建了两个线程,分别执行了两个不同的任务。 using System; using System.Threading; class Program…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部