C#将DataTable转换成list的方法

DataTable转换成ListC#开发中常见的需求,下面是将DataTable转换成List的完整攻略。

步骤1:创建实体类

创建一个实体类作为转换后的对象类型。实体类中的属性需要与DataTable中的列对应。

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

步骤2:将DataTable转换成List

可以使用LINQ或者foreach循环遍历DataTable并将每一行转换成实体类。

方法一:使用LINQ

List<Person> personList = dataTable.AsEnumerable().Select(row => new Person
{
    Id = row.Field<int>("Id"),
    Name = row.Field<string>("Name"),
    Age = row.Field<int>("Age")
}).ToList();

方法二:使用foreach循环

List<Person> personList = new List<Person>();
foreach (DataRow row in dataTable.Rows)
{
    Person person = new Person
    {
        Id = Convert.ToInt32(row["Id"]),
        Name = row["Name"].ToString(),
        Age = Convert.ToInt32(row["Age"])
    };
    personList.Add(person);
}

示例一:从数据库中读取数据转换成List

using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=TestDB;Integrated Security=True"))
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("SELECT * FROM Persons", conn);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataTable dataTable = new DataTable();
    adapter.Fill(dataTable);

    List<Person> personList = dataTable.AsEnumerable().Select(row => new Person
    {
        Id = row.Field<int>("Id"),
        Name = row.Field<string>("Name"),
        Age = row.Field<int>("Age")
    }).ToList();
}

示例二:从CSV文件中读取数据转换成List

using (var reader = new StreamReader("path/to/csv/file.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    var records = csv.GetRecords<dynamic>();
    DataTable dataTable = new DataTable();
    foreach (var record in records)
    {
        IDictionary<string, object> dictRecord = record as IDictionary<string, object>;
        if (dataTable.Columns.Count == 0)
        {
            foreach (var key in dictRecord.Keys)
            {
                dataTable.Columns.Add(key);
            }
        }
        DataRow dataRow = dataTable.NewRow();
        foreach (var key in dictRecord.Keys)
        {
            dataRow[key] = dictRecord[key];
        }
        dataTable.Rows.Add(dataRow);
    }

    List<Person> personList = new List<Person>();
    foreach (DataRow row in dataTable.Rows)
    {
        Person person = new Person
        {
            Id = Convert.ToInt32(row["Id"]),
            Name = row["Name"].ToString(),
            Age = Convert.ToInt32(row["Age"])
        };
        personList.Add(person);
    }
}

以上就是将DataTable转换成List的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#将DataTable转换成list的方法 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#解决文件被占用资源,无法删除或修改的方法

    接下来我将为您详细讲解“C#解决文件被占用资源,无法删除或修改的方法”的完整攻略。 1.现象分析 当我们在尝试删除或修改某个文件时,有时会出现文件被占用,无法删除或修改的情况。这是因为文件被其他进程占用,或者正在被我们自己的程序所使用。 2.解决方案 2.1 判断文件是否被占用 在C#中,通过使用FileAccess枚举类中的Read属性来检查文件是否正在被…

    C# 2023年6月1日
    00
  • C# 泛型集合类List使用总结

    C# 泛型集合类List使用总结 目录 介绍 创建List 添加元素 删除元素 查询元素 遍历List List的排序 示例1:统计字符串中单词出现次数 示例2:实现学生信息管理系统 1. 介绍 C#中的List是一个泛型集合类,可以储存任意类型的数据,它类似于C++ STL中的vector。List的数据结构是动态数组,支持快速访问和线性遍历。与Array…

    C# 2023年5月31日
    00
  • 详解C#中的泛型以及编程中使用泛型的优点

    我非常乐意讲解一下C#中的泛型以及如何通过泛型编程来提高代码的重用性和可维护性。 什么是泛型 泛型是一种可以实现类型参数化的编程方法。在编写程序时,我们通常会创建不同类型的数据结构和函数。在C#中,这些数据结构和函数的类型通常会由具体的类型来决定。而泛型则提供了一种方法来针对具有相同结构的不同类型,提高我们代码的重用性。 举个例子,你可以声明一个泛型类,这个…

    C# 2023年6月3日
    00
  • C# GUID ToString的使用总结

    C# GUID ToString的使用总结 什么是GUID GUID (Globally Unique Identifier) 是一个128位数的二进制标识符,通常用于在各种领域标识唯一性。 在C#中,可以使用Guid结构体来表示GUID。Guid结构体包含了许多静态方法和实例方法,其中一种实例方法是ToString。 怎么使用GUID ToString方法…

    C# 2023年6月7日
    00
  • ASP.NET MVC前台动态添加文本框并在后台使用FormCollection接收值

    ASP.NET MVC是一种针对Web应用程序的Web框架,它支持使用C#或VB.NET编程语言来创建动态、响应性的Web应用程序。本文将详细介绍如何在ASP.NET MVC前台动态添加文本框并在后台使用FormCollection接收值的过程。 准备工作 在开始本文的教程之前,你需要进行以下准备工作: 首先,你需要安装Visual Studio 2017或…

    C# 2023年6月3日
    00
  • C#中结构体和字节数组转换实现

    C#中结构体和字节数组互相转换是常见的操作,结构体可以用来表示数据的存储,字节数组可以用来将数据在不同计算机或程序之间传输。以下是实现该操作的攻略。 1. 结构体与字节数组的转换 1.1 将结构体转换为字节数组 将结构体转换成字节数组需要用到C#中的Marshal类和SizeOf方法。SizeOf方法可以得到结构体的大小,Marshal类提供了各种Marsh…

    C# 2023年6月7日
    00
  • asp.net中获取客户端IP地址网卡信息等方法的代码

    在ASP.NET中,一般可以通过以下两种方式获取客户端的IP地址。 方法一:通过HttpContext.Current.Request.ServerVariables获取客户端IP地址 string ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_F…

    C# 2023年5月31日
    00
  • C#使用log4net记录日志

    下面是关于” C#使用log4net记录日志 “的完整攻略。 一、什么是log4net log4net是一个用于.Net环境下高度可配置的日志组件,它能够记录任何.Net应用程序或库中发生的任何事件,从简单的控制台输出到复杂的邮件消息和数据库日志记录都可以轻松地实现。 二、如何使用log4net 以下是使用log4net的基本步骤: 1. 添加log4net…

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