C#将DataTable转换成list的方法

yizhihongxing

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#生成putty格式的ppk文件

    生成putty格式的ppk文件需要经过以下几个步骤: 生成SSH密钥对 首先需要在本地生成SSH密钥对,可以使用OpenSSH或PuTTY生成器工具。以下是使用OpenSSH生成SSH密钥对的步骤: 打开终端或命令行窗口。 在命令行中输入以下命令生成SSH密钥对: ssh-keygen -t RSA -b 2048 根据提示输入密钥名称、密码等相关信息,并确…

    C# 2023年6月7日
    00
  • 在IIS上部署ASP.NET Core Web API的方法步骤

    在IIS上部署ASP.NET Core Web API的方法步骤 部署ASP.NET Core Web API到IIS上需要以下步骤: 在Visual Studio中发布应用程序。 在IIS中创建一个新的网站。 将应用程序发布到IIS中创建的网站。 以下是每个步骤的详细说明: 步骤1:在Visual Studio中发布应用程序 在Visual Studio中…

    C# 2023年5月16日
    00
  • IIS7.5中调试.Net 4.0网站出现无厘头、500错误的解决方法

    在IIS7.5中调试.Net4.0网站时,有时会出现无厘头、500错误的情况。这可能是由于IIS7.5没有正确配置.Net4.0应用程序池而导致的。本文将提供解决方案,帮助解决这个问题。 问题描述 在IIS7.5中调试.Net4.0网站时,有时会出现无厘头、500错误的情况。具体表现为,网站无法正常运行,或者在使用某些功能时崩溃。 解决方案 方法一:配置.N…

    C# 2023年5月15日
    00
  • WCF和Remoting之间的消息传输

    下面是关于“WCF和Remoting之间的消息传输”的完整攻略,包含两个示例。 1. WCF和Remoting之间的消息传输 WCF和Remoting都是.NET Framework中用于实现分布式应用程序的技术。WCF使用SOAP协议和HTTP协议进行消息传输,而Remoting使用二进制协议和TCP协议进行消息传输。在.NET Framework 3.0…

    C# 2023年5月15日
    00
  • C#格式化数字字符串的方法

    下面我将为你详细讲解如何在C#中格式化数字字符串的方法。 使用ToString方法格式化数字字符串 在C#中,我们可以使用ToString方法来将数字格式化为字符串。该方法有许多重载,可以用于格式化不同类型的数字,下面是一些常见的用法。 1. 格式化整数 对于整数类型,可以使用ToString方法的重载形式来指定需要的格式,例如: int num = 123…

    C# 2023年5月15日
    00
  • .NET 常用功能和代码小结

    .NET 常用功能和代码小结 在 .NET 中,常见的功能和代码小结包括但不限于以下几个方面: 文件操作 文件读取 .NET 提供了 System.IO 命名空间用于文件操作,其中 FileStream 和 StreamReader 是常见的文件读取方式。以下是示例代码: using (var stream = new FileStream("te…

    C# 2023年5月31日
    00
  • 实例代码讲解c# 线程(上)

    让我来详细讲解一下“实例代码讲解c# 线程(上)”的完整攻略。 标题 首先,我们需要为文章设置标题。根据内容来判断,可以设置成如下格式: 实例代码讲解c# 线程(上) 介绍 在本篇文章中,我们将会介绍c#编程语言中线程的概念和使用方法。 线程是什么? 线程是程序执行的一条路径。在c#中,线程是一个轻量级的操作系统对象,它能够并发地执行代码。c#中的线程可以与…

    C# 2023年5月31日
    00
  • C#生成带注释的dll并引用实现

    生成带注释的dll并引用实现的完整攻略如下: 1. 创建Class Library项目 首先,我们需要在Visual Studio中创建一个Class Library项目,命名为”MyLibrary”(或其他你希望名字)。 2. 编写代码并添加注释 编写一个简单的类,并为类、属性和方法添加注释。代码如下: /// <summary> /// My…

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