C#-DataSet装换为泛型集合方法

 1 /**
 2 *┌──────────────────────────────────────────────────────────────┐
 3 *│ 描    述:数据库相关的工具类                                                   
 4 *│ 作    者:执笔小白-https://www.cnblogs.com/whpepsi/p/3779217.html                                 
 5 *│ 版    本:1.0                                       
 6 *│ 创建时间:2021-10-13 15:40:56                            
 7 *└──────────────────────────────────────────────────────────────┘
 8 *┌──────────────────────────────────────────────────────────────┐
 9 *│ 命名空间: TT                               
10 *│ 类    名:DataTools                                     
11 *└──────────────────────────────────────────────────────────────┘
12 */
13 using System;
14 using System.Collections.Generic;
15 using System.Data;
16 using System.Reflection;
17 
18 namespace WMSTOMESTT
19 {
20     public class DataTools
21     {
22 
23         /// <summary>
24         /// DataSet装换为泛型集合
25         /// </summary>
26         /// <typeparam name="T"></typeparam>
27         /// <param name="p_DataSet">DataSet</param>
28         /// <param name="p_TableIndex">待转换数据表索引</param>
29         /// <returns></returns>
30         public static List<T> DataSetToIList<T>(DataSet p_DataSet, int p_TableIndex)
31         {
32             if (p_DataSet == null || p_DataSet.Tables.Count < 0)
33                 return null;
34             if (p_TableIndex > p_DataSet.Tables.Count - 1)
35                 return null;
36             if (p_TableIndex < 0)
37                 p_TableIndex = 0;
38 
39             DataTable p_Data = p_DataSet.Tables[p_TableIndex];
40             // 返回值初始化
41             List<T> result = new List<T>();
42             for (int j = 0; j < p_Data.Rows.Count; j++)
43             {
44                 T _t = (T)Activator.CreateInstance(typeof(T));
45                 PropertyInfo[] propertys = _t.GetType().GetProperties();
46                 foreach (PropertyInfo pi in propertys)
47                 {
48                     for (int i = 0; i < p_Data.Columns.Count; i++)
49                     {
50                         // 属性与字段名称一致的进行赋值 (枚举类型无法转换,单独拎出来)
51                         if (pi.Name.Equals(p_Data.Columns[i].ColumnName))
52                         {
53                             // 数据库NULL值单独处理
54                             if (p_Data.Rows[j][i] != DBNull.Value)
55                                 pi.SetValue(_t, p_Data.Rows[j][i], null);
56                             else
57                                 pi.SetValue(_t, null, null);
58                             break;
59                         }
60                     }
61                 }
62                 result.Add(_t);
63             }
64             return result;
65         }
66     }
67     // 示例
68     public class DatatoolTest
69     {
70         // DataSet装换为泛型集合例子
71         public void DataSetToIListTest()
72         {
73             //List<BilClass> bilClass = DataTools.DataSetToIList<BilClass>(dataSet, 0);
74         }
75     }
76 }

转自:

https://www.cnblogs.com/whpepsi/p/3779217.html
posted @ 2021-10-15 09:41  ꧁执笔小白꧂  阅读(77)  评论(0编辑  收藏  举报