C#快速为数据实体类属性批量赋值方法

5星 · 超过95%的资源 需积分: 42 99 下载量 34 浏览量 更新于2024-12-06 收藏 2KB TXT 举报
在C#编程中,数据实体类(如Class1)的设计通常用于封装数据库中的数据,以便于管理和操作。当你从数据库中获取大量数据,如一个DataSet,手动逐个为实体类的属性赋值会显得繁琐且效率低下,特别是当数据表包含上百个字段时。为了解决这个问题,可以采用反射机制来自动化这个过程。 首先,创建一个名为Class1的实体类,它包含两个属性:intTemp和strTemp,分别表示整型和字符串类型的数据。这两个属性都定义了get和set方法,以支持读取和设置值。 ```csharp public class Class1 { private int intTemp; public int IntTemp { get { return intTemp; } set { intTemp = value; } } private string strTemp; public string StrTemp { get { return strTemp; } set { strTemp = value; } } } ``` 在主程序中,通过DataSet获取数据,然后使用DataTable处理每一行数据。例如,你可以创建一个新的DataTable,添加列并插入数据,然后遍历DataSet中的每一行,将数据填充到Class1实例的属性中。 ```csharp static void Main(string[] args) { List<Class1> cs = new List<Class1>(); // 存储实例化的Class1对象 DataSet ds = new DataSet(); DataTable dt = new DataTable(); // ... (创建表头和数据行) foreach (DataRow dr in ds.Tables[0].Rows) // 假设数据集只有一张表 { Class1 c = new Class1(); // 创建Class1对象 // 使用反射获取当前DataRow中的列 foreach (DataColumn dc in dr.Table.Columns) { PropertyInfo pi = c.GetType().GetProperty(dc.ColumnName); // 获取对应属性 pi.SetValue(c, dr[dc.ColumnName], null); // 设置属性值 } cs.Add(c); // 将实例添加到列表中 } } ``` 这里的关键在于使用`PropertyInfo`和`GetValue`方法,它们利用反射API根据数据行的列名动态地找到对应的Class1属性,并将其值设置为数据行的对应值。这种方法大大提高了给实体类属性赋值的效率,特别是在处理大规模数据时。 总结来说,C#中给数据实体类属性赋值可以通过反射机制自动化处理,结合DataSet和DataTable等数据结构,能够有效简化代码,提高开发效率。通过这种方式,即使数据表包含多个字段,也能轻松地将数据映射到实体类中。