很简单的转换功能,这是我在GitHub上复制的一段代码(懒得再去找原地址了),感觉功能还算可以,贴出来分享给大家

        /// <summary>
/// DataTable to List converter generic class.
/// Convert DataTable to a specific class List<>.
/// The Class Property Name must be same as the Column Name of the DataTable.
/// The mapping is directly upon "Class Property Name" and "Column Name of the DataTable".
/// </summary>
public static List<T> ConvertDataTableToList<T>(DataTable table)
where T : class, new()
{
List<Tuple<DataColumn, PropertyInfo>> map =
new List<Tuple<DataColumn, PropertyInfo>>(); foreach (PropertyInfo pi in typeof(T).GetProperties())
{
//ColumnAttribute col = (ColumnAttribute)
// Attribute.GetCustomAttribute(pi, typeof(ColumnAttribute));
//if (col == null) continue;
if (table.Columns.Contains(pi.Name))
{
map.Add(new Tuple<DataColumn, PropertyInfo>(
table.Columns[pi.Name], pi));
}
} List<T> list = new List<T>(table.Rows.Count);
foreach (DataRow row in table.Rows)
{
if (row == null)
{
list.Add(null);
continue;
}
T item = new T();
foreach (Tuple<DataColumn, PropertyInfo> pair in map)
{
object value = row[pair.Value1];
if (value is DBNull) value = null;
pair.Value2.SetValue(item, value, null);
}
list.Add(item);
}
return list;
}
sealed class Tuple<T1, T2>
{
public Tuple() { }
public Tuple(T1 value1, T2 value2) { Value1 = value1; Value2 = value2; }
public T1 Value1 { get; set; }
public T2 Value2 { get; set; }
}

DataTableToList的更多相关文章

  1. DataSetToList 和 DataTableTolist 转换

    DataSetToList 及DataTableTolist经常使用,在此分享一下我的方法. DataSetToList 和 DataTableTolist 转换 DataSetToList 和 Da ...

  2. .NET基础架构方法—DataTableToList通用方法

    p { display: block; margin: 3px 0 0 0; } --> .NET架构基础方法—DataTableToList通用方法   我们经常需要将从数据库中所读取的数据以 ...

  3. 【C#公共帮助类】 Utils 10年代码,最全的系统帮助类

    为大家分享一下个人的一个Utils系统帮助类,可能有些现在有新的技术替代,自行修改哈~ 这个帮助类主要包含:对象转换处理 .分割字符串.截取字符串.删除最后结尾的一个逗号. 删除最后结尾的指定字符后的 ...

  4. DataTable转List

    Invoke : DataTableToList<City>.ConvertToModel(ds.Tables[0]).ToList<City>(); using System ...

  5. ADO.NET数据访问模板整理

    /// <summary> /// 数据访问类:hi_test /// </summary> public partial class TestDA { public Test ...

  6. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  7. C#中DataTable转化为List<T>解析

    在.net项目中使用到DataTable和List<T>集合的地方较多, 泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的效力和灵活性.不会强行对值类型进行装箱和拆箱,或对引用类 ...

  8. MVC学习系列7--下拉框的联动

    [使用场景:两个DropDownList的联动,选择其中一个DropDownList,然后加载数据到另外的一个DropDownList上] 这里,我打算实现的需求是:有两个DropDownList,一 ...

  9. DataTable转实体Model,DataRow转实体Model,DataTable转泛型T,DataRow转泛型T

    前言,此方法利用反射将DataRow转成实体,由于反射性能不行,大家就看看就行了吧. 代码来啦 using System; using System.Collections.Generic; usin ...

随机推荐

  1. Java - 初始化

    用构造器保证初始化 构造器名称必须与类名完全相同,所以“每个方法首字母必须小写”的风格不适合构造器. 不接受任何参数的构造器叫做默认构造器.Java文档中通常叫做无参构造器. 构造器没有返回值,但与返 ...

  2. C#获取当前时间详解

    [转]C#获取当前日期时间(转)  http://blog.163.com/ljq086@126/blog/static/549639712010112921658843/ 我们可以通过使用DataT ...

  3. nopCommerce 3.9 大波浪系列 之 路由注册

    在Global.asax,Application_Start()方法中会进行路由注册,代码如下. public static void RegisterRoutes(RouteCollection r ...

  4. 学习笔记TF031:实现VGGNet

    VGGNet,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发,深度卷积神经网络.VGGNet反复堆叠3x3小型卷积核和2x2最大池化层, ...

  5. (转)mq常用命令

    (暂时放一放) 创建队列管理器crtmqm qmgrname   删除队列管理器dltmqm [-z] qmgrname   启动队列管理器strmqm qmgrname   停止队列管理器endmq ...

  6. 【LeetCode题解】动态规划:从新手到专家(一)

    文章标题借用了Hawstein的译文<动态规划:从新手到专家>. 1. 概述 动态规划( Dynamic Programming, DP)是最优化问题的一种解决方法,本质上状态空间的状态转 ...

  7. 内核对象kobject和sysfs(2)——kref分析

    内核对象kobject和sysfs(2)--kref分析 在介绍ref之前,先贴上kref的结构: struct kref { atomic_t refcount; }; 可以看到,kref只是包含一 ...

  8. 41. leetcode 53. Maximum Subarray

    53. Maximum Subarray Find the contiguous subarray within an array (containing at least one number) w ...

  9. PyCharm 去掉自动保存功能

    PyCharm 4.5.4 环境配置 1.去掉"自动保存功能" pycharm默认是自动保存的,习惯自己按 ctrl + s 的可以进行如下设置: 菜单File -> Set ...

  10. JavaScript数组遍历(迭代)方法 8种

    最近工作中经常涉及到数据的处理,数组尤其常见,经常需要对其进行遍历.转换操作,网上的文章零零散散,不得已自己又找出红宝书来翻出来看,顺便记一笔,便于以后查询. 数组常用的方法 ECMAScript5为 ...