Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# list转datatable

作者:淺墨   发布日期:2026-07-27   浏览:54

using System;
using System.Data;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { Id = 1, Name = "Alice", Age = 30 },
            new Person { Id = 2, Name = "Bob", Age = 25 },
            new Person { Id = 3, Name = "Charlie", Age = 35 }
        };

        DataTable dataTable = ListToDataTable(people);

        // 打印 DataTable 内容
        foreach (DataRow row in dataTable.Rows)
        {
            Console.WriteLine($"{row["Id"]}, {row["Name"]}, {row["Age"]}");
        }
    }

    public static DataTable ListToDataTable<T>(List<T> items)
    {
        DataTable dataTable = new DataTable(typeof(T).Name);

        // 获取类的所有属性
        PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

        // 添加列
        foreach (PropertyInfo prop in props)
        {
            dataTable.Columns.Add(prop.Name, prop.PropertyType);
        }

        // 添加行
        foreach (T item in items)
        {
            var values = new object[props.Length];
            for (int i = 0; i < props.Length; i++)
            {
                values[i] = props[i].GetValue(item, null);
            }
            dataTable.Rows.Add(values);
        }

        return dataTable;
    }
}

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

解释说明

  1. 定义一个泛型方法 ListToDataTable<T>:

    • 该方法接受一个泛型列表 List<T>,并返回一个 DataTable
    • 使用反射获取类型 T 的所有公共属性,并根据这些属性创建 DataTable 的列。
    • 遍历列表中的每个元素,将每个元素的属性值添加到 DataTable 的行中。
  2. 示例使用:

    • 创建一个 Person 类的列表,并调用 ListToDataTable 方法将其转换为 DataTable
    • 最后打印 DataTable 中的内容以验证结果。
  3. 注意事项:

    • 该方法依赖于反射,因此在处理大量数据时可能会影响性能。
    • 如果需要更好的性能,可以考虑使用更高效的方法或库。

上一篇:c# string转byte数组

下一篇:c# opencvsharp

大家都在看

c# 二进制

c# 创建目录

c# socket服务端连接多个客户端

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

c# invoke方法

.net和c#

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站