C#中DataTable的创建与遍历实现

本文介绍了如何在 C# 中创建和遍历 DataTable 对象,并将其转换为 List 用户信息类。首先展示了创建 DataTable 的过程,包括定义自增长 ID 列和其他列,然后填充数据。接着,详细阐述了遍历 DataTable 并将数据转换为 UserInfo 类型的 List 的方法,确保了在转换过程中处理了可能的 DBNull 值。
摘要由CSDN通过智能技术生成

1、创建DataTable对象

/// <summary>
/// 创建DataTable对象
/// </summary>
public static DataTable CreateDataTable()
{
  //创建DataTable
  DataTable dt = new DataTable("NewDt");
       
  //创建自增长的ID列
  DataColumn dc = dt.Columns.Add("ID", Type.GetType("System.Int32"));
  dc.AutoIncrement = true;  //自动增加
  dc.AutoIncrementSeed = 1; //起始为1
  dc.AutoIncrementStep = 1; //步长为1
  dc.AllowDBNull = false;  //非空
  
  //创建其它列表
  dt.Columns.Add(new DataColumn("Name", Type.GetType("System.String")));
  dt.Columns.Add(new DataColumn("Age", Type.GetType("System.Int32")));
  dt.Columns.Add(new DataColumn("Score", Type.GetType("System.Decimal")));
  dt.Columns.Add(new DataColumn("CreateTime", Type.GetType("System.DateTime")));
  
  //创建数据
  DataRow dr = dt.NewRow();
  dr["Name"] = "张三";
  dr["Age"] = 28;
  dr["Score"] = 85.5;
  dr["CreateTime"] = DateTime.Now;
  dt.Rows.Add(dr);
  
  dr = dt.NewRow();
  dr["Name"] = "李四";
  dr["Age"] = 24;
  dr["Score"] = 72;
  dr["CreateTime"] = DateTime.Now;
  dt.Rows.Add(dr);
  
  dr = dt.NewRow();
  dr["Name"] = "王五";
  dr["Age"] = 36;
  dr["Score"] = 63.5;
  dr["CreateTime"] = DateTime.Now;
  dt.Rows.Add(dr);
  
  return dt;
}

2、遍历DataTable对象

/// <summary>
/// 遍历DataTable对象,转换成List对象
/// </summary>
public static List<UserInfo> TraverseDataTable(DataTable dt)
{
  List<UserInfo> userList = new List<UserInfo>();
  
  //判断DataTable是否为空
  if (dt == null || dt.Rows.Count == 0)
  {
    return null;
  }
  
  //遍历DataTable对象,转换成List
  foreach (DataRow row in dt.Rows)
  {
    UserInfo user = new UserInfo();
  
    if (dt.Columns.Contains("ID") && !Convert.IsDBNull(row["ID"]))
      user.ID = Convert.ToInt32(row["ID"]);
  
    if (dt.Columns.Contains("Name") && !Convert.IsDBNull(row["Name"]))
      user.Name = Convert.ToString(row["Name"]);
  
    if (dt.Columns.Contains("Age") && !Convert.IsDBNull(row["Age"]))
      user.Age = Convert.ToInt32(row["Age"]);
  
    if (dt.Columns.Contains("Score") && !Convert.IsDBNull(row["Score"]))
      user.Score = Convert.ToDouble(row["Score"]);
  
    if (dt.Columns.Contains("CreateTime") && !Convert.IsDBNull(row["CreateTime"]))
      user.CreateTime = Convert.ToDateTime(row["CreateTime"]);
  
    userList.Add(user);
  }
  
  return userList;
}

其它代码:

/// <summary>
/// 用户信息类
/// </summary>
public class UserInfo
{
  /// <summary>
  /// 编号
  /// </summary>
  public int ID { get; set; }
  
  /// <summary>
  /// 名称
  /// </summary>
  public string Name { get; set; }
  
  /// <summary>
  /// 年龄
  /// </summary>
  public int Age { get; set; }
  
  /// <summary>
  /// 成绩
  /// </summary>
  public double Score { get; set; }
  
  /// <summary>
  /// 创建时间
  /// </summary>
  public DateTime CreateTime { get; set; }
}

到此这篇c#教程关于C#中DataTable的创建与遍历实现的文章就介绍到这了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值