佛山企业网站设计制作,用名字做壁纸网站,美食网站开发可行性分析报告,如何做pc网站适配在C#中#xff0c;可以使用反射来将DataTable转换为泛型列表。下面是一个示例代码#xff0c;展示了如何使用反射来实现这个转换过程#xff1a;
using System;
using System.Collections.Generic;
using System.Data;public class DataConverter
{public ListT Co…在C#中可以使用反射来将DataTable转换为泛型列表。下面是一个示例代码展示了如何使用反射来实现这个转换过程
using System;
using System.Collections.Generic;
using System.Data;public class DataConverter
{public ListT ConvertDataTableToListT(DataTable dataTable) where T : new(){ListT list new ListT();foreach (DataRow row in dataTable.Rows){T item new T();foreach (DataColumn column in dataTable.Columns){var property typeof(T).GetProperty(column.ColumnName);if (property ! null row[column] ! DBNull.Value){property.SetValue(item, Convert.ChangeType(row[column], property.PropertyType), null);}}list.Add(item);}return list;}
}在这个示例中我们创建了一个名为DataConverter的类其中包含一个泛型方法ConvertDataTableToListT。这个方法接收一个DataTable作为参数并使用反射技术将其转换为指定类型的泛型列表。在方法中我们使用foreach循环遍历DataTable的行和列然后使用反射来动态设置对象的属性值。
使用这个DataConverter类可以很容易地将DataTable转换为任何指定类型的泛型列表。例如假设我们有一个名为Person的实体类
public class Person
{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }
}可以这样使用DataConverter类来将DataTable转换为ListPerson // 创建一个DataTable实例DataTable dataTable new DataTable(Person);// 添加列dataTable.Columns.Add(Id, typeof(int));dataTable.Columns.Add(Name, typeof(string));dataTable.Columns.Add(Age, typeof(int));// 添加行数据dataTable.Rows.Add(1, John, 25);dataTable.Rows.Add(2, Alice, 30);dataTable.Rows.Add(3, Bob, 28);ListPerson personList ConvertDataTableToListPerson(dataTable);在上面的示例中我们根据Person类的属性结构将DataTable中的数据转换为ListPerson。这种方法能够以通用的方式来转换任何实体类对应的DataTable为泛型列表使代码更加灵活和可复用。