怎么将datatable中的数据写入实体类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么将datatable中的数据写入实体类?相关的知识,希望对你有一定的参考价值。

datatable中的值类型与实体类中不符时 怎么将datatable中值的类型转换为实体类中对应字段的值类型

看实体类什么类型的,就转成什么类型的
实体类中是string 那就用datatable.rows[0]["列名"].ToString();
实体类中是int 那就用convert.toint32(datatable.rows[0]["列名"]);
以此类推嘛
参考技术A 方法一:用Convert类转换
方法二:较简单,使用序列化和反序列化

C# 将DataTable数据源转换成实体类

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Data;
 4 using System.Reflection;
 5 
 6 /// <summary>
 7 /// 将DataTable数据源转换成实体类
 8 /// </summary>
 9 /// <typeparam name="T">实体</typeparam>
10 public static class ToModel<T> where T : new()
11 {
12     /// <summary>
13     /// 将DataTable数据源转换成实体类
14     /// </summary>
15     public static List<T> ConvertToModel(DataTable dt)
16     {
17         List<T> ts = new List<T>();// 定义集合
18         foreach (DataRow dr in dt.Rows)
19         {
20             T t = new T();
21             PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性
22             foreach (PropertyInfo pi in propertys)
23             {
24                 if (dt.Columns.Contains(pi.Name))
25                 {
26                     if (!pi.CanWrite) continue;
27                     var value = dr[pi.Name];
28                     if (value != DBNull.Value)
29                     {
30                         switch (pi.PropertyType.FullName)
31                         {
32                             case "System.Decimal":
33                                 pi.SetValue(t, decimal.Parse(value.ToString()), null);
34                                 break;
35                             case "System.String":
36                                 pi.SetValue(t, value.ToString(), null);
37                                 break;
38                             case "System.Int32":
39                                 pi.SetValue(t, int.Parse(value.ToString()), null);
40                                 break;
41                             default:
42                                 pi.SetValue(t, value, null);
43                                 break;
44                         }
45                     }
46                 }
47             }
48             ts.Add(t);
49         }
50         return ts;
51     }
52 }

 

以上是关于怎么将datatable中的数据写入实体类?的主要内容,如果未能解决你的问题,请参考以下文章

C# 将DataTable数据源转换成实体类

反射DataTable转实体类

DataTable转实体类

DataTable与实体类互相转换

实体类与DataTable互换

Datatable转实体 实体转换辅助类