(转载)DataTable与List<T>相互转换
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- namespace Common
- {
- public class ModelHelper
- {
- public static List<T> TableToEntity<T>(DataTable dt) where T : new()
- {
- List<T> lists = new List<T>();
- if (dt.Rows.Count > )
- {
- foreach (DataRow row in dt.Rows)
- {
- lists.Add(SetVal(new T(), row));
- }
- }
- return lists;
- }
- public static T SetVal<T>(T entity, DataRow row) where T : new()
- {
- Type type = typeof(T);
- PropertyInfo[] pi = type.GetProperties();
- foreach (PropertyInfo item in pi)
- {
- if (row[item.Name] != null && row[item.Name] != DBNull.Value)
- {
- if (item.PropertyType.IsGenericType && item.PropertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
- {
- Type conversionType = item.PropertyType;
- NullableConverter nullableConverter = new NullableConverter(conversionType);
- conversionType = nullableConverter.UnderlyingType;
- item.SetValue(entity, Convert.ChangeType(row[item.Name], conversionType), null);
- }
- else
- {
- item.SetValue(entity, Convert.ChangeType(row[item.Name], item.PropertyType), null);
- }
- }
- }
- return entity;
- }
- public static DataTable EntityToDataTable<T>(List<T> list) where T : new()
- {
- if (list == null || list.Count == )
- {
- return null;
- }
- DataTable dataTable = new DataTable(typeof(T).Name);
- foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
- {
- if (propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
- {
- Type conversionType = propertyInfo.PropertyType;
- NullableConverter nullableConverter = new NullableConverter(conversionType);
- conversionType = nullableConverter.UnderlyingType;
- dataTable.Columns.Add(new DataColumn(propertyInfo.Name, conversionType));
- }
- else
- {
- dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));
- }
- }
- foreach (T model in list)
- {
- DataRow dataRow = dataTable.NewRow();
- foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
- {
- object value = propertyInfo.GetValue(model, null);
- if (value != null)
- {
- dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
- }
- else
- {
- dataRow[propertyInfo.Name] = DBNull.Value;
- }
- }
- dataTable.Rows.Add(dataRow);
- }
- return dataTable;
- }
- }
- }
(转载)DataTable与List<T>相互转换的更多相关文章
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换
路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中, ...
- C# DataTable 和List之间相互转换的方法(转载)
来源:https://www.cnblogs.com/shiyh/p/7478241.html 一.List<T>/IEnumerable转换到DataTable/DataView 方法一 ...
- C# DataTable 和List之间相互转换的方法
介绍:List/IEnumerable转换到DataTable/DataView,以及DataTable转换到List 正文: 一.List<T>/IEnumerable转换到DataTa ...
- 转 C# DataTable 和List之间相互转换的方法
一.List/IEnumerable转换到DataTable/DataView 方法一: /// <summary> /// Convert a List{T} to a DataTabl ...
- (转载)DataTable使用技巧总结
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.Da ...
- DataTable与List<T>相互转换
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- C# datatable to list
C# DataTable 和List之间相互转换的方法 好库文章 » 软件开发 » .NET » C# 发布者:好饱 发布日期:2013-1-27 22:17:49 更新日期:2013-1-27 ...
- Linq 操作基础
参考资料: LINQ系列:LINQ to DataSet的DataTable操作 List<T>转换为DataTable C# DataTable 和List之间相互转换的方法 Linq中 ...
- 【转载】ArcEngine ITable 与System.DataTable相互转换
/// <summary> /// 打开dbf表 /// </summary> /// <param name="pathName"></ ...
随机推荐
- HTTP Analyzer过滤器使用
HTTP Analyzer简单易用,真实抓包居家必备啊,上一次分享了Fiddler的过滤条件,这次介绍下这款软件的过滤,首先按照肯定是按照软件类型分类喽: 1.按照软件过滤: 这样只会显示chrome ...
- Odoo many2many command
CREATE = lambda values: (0, False, values) // (0,False, Values) //创建 UPDATE = lambda id, values: (1, ...
- js获取时间查并实现倒计时读条
<script type="text/javascript"> $().ready(function () {// 每增加一个切换,就要增加一行,tab1不变,其他的都 ...
- FishiGUI系统架构分析 和层次结构 二
FishiGUI的类型 FIshiGUI属于为应用程序提供图形界面服务的框架系统.它并不直接与终于用户交互(负责与终于用户交互的是在FishiGUI基础上开发的应用程序).而是接受操作系统传来的硬件消 ...
- Sql视图创建语句及修改视图
create view [dbo].[AllUsers] as select u.UserId, u.Firstname, u.Lastname, u.ts, am.Email, au.UserNam ...
- Maven的pom文件内容详细理解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- baksmali反编译出现:UNEXPECTED TOP-LEVEL ERROR:....Too many open files
解包大型apk文件,可能会出现例如以下错误, UNEXPECTED TOP-LEVEL ERROR: java.util.concurrent.ExecutionException: java.io. ...
- Away3D引擎学习笔记(二)CameraController相机控制的应用
cameraController---相机控制器 这里针对Away3D里面封装的CameraController的区别和使用做些简单介绍.相机控制器的设计思路比较清晰,所以难点东西不多.使用方面附上源 ...
- Spring Boot - 配置信息后处理
最近在做项目的过程中,PSS提出配置文件中类似数据库连接需要的用户名.密码等敏感信息需要加密处理(之前一直是明文的). 为了快速完成任务,网上搜刮到jasypt包,也有相应的starter,使用方法可 ...
- 全站301跳转 PHP
$the_host = $_SERVER['HTTP_HOST'];//取得当前域名 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER[ ...