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#数组的常用操作方法小结的详细攻略: 数组概述 数组是一种存储相同类型数据的集合。在C#中,声明数组时需要指定数组的类型和长度。数组的下标从0开始,最大下标为长度减1。 int[] nums = new int[5]; // 声明一个长度为5的int类型数组 常用操作方法 1. 数组的遍历 遍历数组是一个常见的操作,可以使用C#的for循环遍历数组元…

    C# 2023年5月31日
    00
  • C#监控文件夹变化的方法

    下面我将为你详细讲解“C#监控文件夹变化的方法”的完整攻略。 1. 使用FileSystemWatcher类 在C#中,我们可以使用FileSystemWatcher类来监听特定文件夹的变化。使用方法如下: // 实例化一个FileSystemWatcher对象 FileSystemWatcher watcher = new FileSystemWatche…

    C# 2023年6月1日
    00
  • ASP 处理JSON数据的实现代码

    ASP(Active Server Pages)是类似于PHP的一种动态服务器端脚本语言,在ASP中实现JSON数据处理需要使用到一些相关的类库。 处理JSON数据的基本流程如下: 客户端通过HTTP请求将JSON数据发送到服务器端 服务器端的ASP代码接收JSON数据,并通过相关类库解析JSON数据成为一个可操作的对象 服务器端的ASP代码对解析后的JSO…

    C# 2023年5月31日
    00
  • C#中DateTime的时间加减法操作小结

    C#中DateTime的时间加减法操作小结 在 C# 中,我们可以使用 DateTime 类来操作日期和时间。这个类提供了多种方式来进行时间的计算,包括时间的加、减、比较等操作。 时间加减法操作 在 DateTime 类中,我们可以使用 Add 方法和 Subtract 方法来进行时间的加减法操作。具体用法如下: DateTime date = DateTi…

    C# 2023年6月1日
    00
  • C#中Span相关的性能优化建议

    标题:C#中Span相关的性能优化建议 简介 Span是C#中新增的一种类型,它能够提升数组和字符串的性能表现。下面将给出几个优化建议,帮助开发者正确使用Span。 优化建议 使用Span替换数组 数组是一种引用类型,存放在堆中,而且会由垃圾回收器回收。这个过程比较耗时,所以使用数组可能会降低程序的性能。使用Span可以很好地解决这个问题。 示例: // 使…

    C# 2023年6月8日
    00
  • C#枚举的高级应用

    接下来我将为你讲解C#枚举的高级应用。 1. 枚举的定义 在C#中,枚举本质上是一种值类型,它为一组相关的常量定义了一个公共类型别名。枚举使用关键字enum定义,通常被用来表示有限集合的值,如颜色(ILenum)、星期几、月份等。 下面是一段枚举的定义示例代码: enum Directions { North, South, East, West } 上述代…

    C# 2023年5月15日
    00
  • 浅谈二叉查找树的集合总结分析

    二叉查找树(Binary Search Tree,BST)是一种常见的数据结构,它是一种有序的树形结构,其中每个节点最多有两个子节点。在二叉查找树中,左子树的所有节点的值都小于根节点的值,右子树的所有节点的值都大于根节点的值。这种有序性质使得二叉查找树非常适合用于实现集合(Set)数据结构。 以下是两个示例,介绍如何使用二叉查找树实现集合: 示例一:使用二叉…

    C# 2023年5月15日
    00
  • C# Path.GetTempFileName – 获取一个临时文件名

    Path.GetTempFileName() 是 C# 中的一个方法,用于生成一个唯一的临时文件名,以便在应用程序中保存临时数据。 该方法的返回值是一个字符串,包含一个全局唯一的文件名。临时文件名是基于系统的临时目录和指定的前缀生成的。 以下是使用 Path.GetTempFileName() 方法的完整攻略: 1. 获取临时文件名 string tmpFi…

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