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; }
}
定义一个泛型方法 ListToDataTable<T>:
List<T>,并返回一个 DataTable。T 的所有公共属性,并根据这些属性创建 DataTable 的列。DataTable 的行中。示例使用:
Person 类的列表,并调用 ListToDataTable 方法将其转换为 DataTable。DataTable 中的内容以验证结果。注意事项:
上一篇:c# string转byte数组
下一篇:c# opencvsharp
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站