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日

相关文章

  • Json返回时间的格式中出现乱码问题的两种解决方案

    当我们使用Json传递时间数据时,很容易在返回的时间格式中出现乱码问题。下面将介绍两种解决这个问题的方法。 方法一:使用Unix时间戳传递时间数据 Unix时间戳是从1970年1月1日00:00:00开始经过的秒数。它是一个整数,可以有效地避免在Json返回时间数据时出现编码问题。 具体实现如下: 在后端代码中将时间数据转换为Unix时间戳,如Java代码:…

    C# 2023年6月1日
    00
  • js操作数据库实现注册和登陆的简单实例

    下面是关于“js操作数据库实现注册和登陆的简单实例”的完整攻略。 1. 准备工作 在开始操作数据库实现注册和登陆之前,需要进行以下准备工作: 安装 Node.js 以及相应的依赖模块。可以通过 npm 来安装依赖,具体的依赖包括 mysql、express、body-parser 等。这里以 mysql 和 express 为例进行说明,安装命令如下: ba…

    C# 2023年5月31日
    00
  • C# 删除字符串中的中文(实例分享)

    对于这个主题,我会提供一些基于markdown的标准文本格式的攻略,帮助你更好地理解。 标题 首先,我们需要使用markdown的标准标题格式来说明这个主题。用一个一级标题来概括主题: C# 删除字符串中的中文(实例分享) 然后,我们使用二级标题来讲解具体步骤: 步骤 安装NuGet包System.Text.RegularExpressions csharp…

    C# 2023年6月8日
    00
  • C#简单遍历指定文件夹中所有文件的方法

    下面是“C#简单遍历指定文件夹中所有文件的方法”的完整攻略。 1. 使用Directory类 我们可以使用C#内置的Directory类来实现遍历指定文件夹中所有文件的功能。具体实现步骤如下: 引用System.IO命名空间,使用Directory.GetFiles()方法获取指定文件夹中所有文件的路径。 使用foreach循环遍历获取到的文件路径,在循环体…

    C# 2023年6月1日
    00
  • .Net动态生成controller遇到的坑

    .Net动态生成controller遇到的坑 简述 在使用.NET开发Web应用程序的过程中,我们常常需要动态地生成Controller。但是这个过程中会遇到一些坑,难以发现并解决。本文将详细讲解这些坑以及如何避免它们。 问题 1. 动态添加的controller无法被MVC框架识别 动态添加Controller后,通过浏览器访问应用程序时,MVC框架会报4…

    C# 2023年5月31日
    00
  • C#框架winform实现简单点餐系统

    下面是详细讲解“C#框架winform实现简单点餐系统”的完整攻略。 1. 准备工作 在正式开始开发点餐系统之前,需要准备好相关的工具和资源,以下是准备工作的具体步骤: 1.1 安装Visual Studio Visual Studio是Windows平台下的一款集成开发环境,它支持多种编程语言,其中包括C#。因此,我们需要安装Visual Studio来进…

    C# 2023年6月3日
    00
  • Entity Framework Core 大小写敏感处理

      可以使用’StringComparison’吗? 在数据库查询操作中,不可避免去考虑字母大小写的问题,比如要在Movie表中查找“X-Men”这部电影,为了不区分字母大小写,按照Linq to memory的习惯,可能会写出如下代码: DbContext.DbSet<Movie>  .Where(item => string.Equal…

    C# 2023年4月19日
    00
  • unity里获取text中文字宽度并截断省略的操作

    获取Unity中Text组件中文字宽度并截断省略的操作可以使用Unity自带的TextGenerator类来实现。下面是详细攻略: 步骤1:获取Text组件中的文本字符串 首先,我们需要获取到Text组件中的文本字符串,可以通过Text组件的text属性来获取。例如,如果要获取名为“textObject”的Text组件中的文本字符串,可以使用以下代码: st…

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