DataTable转换List<T>集合的方法

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Data;
using
System.Reflection;

namespace
CasinoDAL
{
    public class
TBTolist<T>where T:new()
    {
       
/// <summary>
        ///
利用反射和泛型
        ///
</summary>
        ///
<param name="dt"></param>
       
/// <returns></returns>
       
public static List<T> ConvertToList(DataTable dt)
       
{
           
// 定义集合
           
List<T> ts = new List<T>();
           
// 获得此模型的类型
           
Type type = typeof(T);
           
//定义一个临时变量
           
string tempName = string.Empty;
           
//遍历DataTable中所有的数据行
           
foreach (DataRow dr in dt.Rows)
           
{
               
T t = new T();
               
// 获得此模型的公共属性
               
PropertyInfo[] propertys = t.GetType().GetProperties();
               
//遍历该对象的所有属性
               
foreach (PropertyInfo pi in propertys)
               
{
                   
tempName = pi.Name;//将属性名称赋值给临时变量
                   
//检查DataTable是否包含此列(列名==对象的属性名)  
                   
if (dt.Columns.Contains(tempName))
                   
{
                       
// 判断此属性是否有Setter
                       
if (!pi.CanWrite) continue;//该属性不可写,直接跳出
                       
//取值
                       
object value = dr[tempName];
                       
//如果非空,则赋给对象的属性
                       
if (value != DBNull.Value)
                           
pi.SetValue(t, dr[tempName],
null);                     
 
                   
}
               
}
               
//对象添加到泛型集合中
               
ts.Add(t);
           
}
           
return ts;
       
}
   
}
}

时间: 2024-08-04 10:03:31

DataTable转换List<T>集合的方法的相关文章

DataTable 转换成 Json的3种方法

在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数据格式就是Json.鉴于此,我今天来分享将DataTable 转换成 Json的3种方法.换句话说如何在ASP.NET将一个DataTable序列化为 Json数组.或者如何从一个DataTable返回一个Json字符串.这篇文章将采用StringBuilder,JavaScriptSeri

DataTable转换成IList&lt;T&gt;的简单实现

DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的高频率动作,DataTable却无能为力. 网上很多朋友说用反射实现.那么问题来了,一定要用反射吗? 下面我们用一个不用反射的方式实现: TableToList类 using System; using System.Collections.Generic; using System.Linq; u

c#将枚举转换成字典集合

枚举在软件开发中的用途 1. 枚举类型(enum type)是具有一组命名常量的独特的值类型. 2. 枚举的定义: public enum Sex { 男 = 0, 女 = 1 } 或者:如果只给男赋值,那么女=1 public enum Sex { 男 = 0, 女 } 3. 我们在实际开发中,对于数据库的设计会经常需要很多状态字段(比如性别.审核状态.分类状态等等等等),而这些状态字段的值又只有固定的几个,这个时候我们一般会需要数据字典来维护这些数据.而数据字典该以什么形式存在呢? 以我自己

C#将DataTable转换成list的方法

本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: /// <summary>   /// 酒店评论列表-分页  /// </summary>  /// <param name="userId"></param>  /// <param name="pageIndex">当前页</param>  /// <param name="

C# DataTable 和List之间相互转换的方法

一.List<T>/IEnumerable转换到DataTable/DataView private DataTable ToDataTable<T>(List<T> items) { var tb = new DataTable(typeof (T).Name); PropertyInfo[] props = typeof (T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (

将list&lt;对象&gt;转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其他的方法,不过这个方法已经实现,就写一下了: 1.创建表. CREATE TABLE [dbo].[person]( [ID] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NULL, [Pwd] [nvarchar](50) NULL, [Age]

如何将DataTable转换成List&lt;T&gt;呢?

昨日在工作中,遇到一个问题:需要将查询出来的DataTable数据源,转换成List<T>的泛型集合(已知T类型).第一反应,我想肯定要用到“泛型”(这不是废话吗?都说了要转换成List<T>泛型集合了),而且还要用到“反射”相关的.呵呵.很快,我就做出了一个小实例,测试通过.下面我将代码贴出来,分享给大家.代码都有详细的注释,读者朋友可以很清晰的看懂我的思路. 这是我写的一个通用转换类,完成此类操作 using System; using System.Collections.G

转 C# DataTable 和List之间相互转换的方法

一.List/IEnumerable转换到DataTable/DataView 方法一: /// <summary> /// Convert a List{T} to a DataTable. /// </summary> private DataTable ToDataTable<T>(List<T> items) {     var tb = new DataTable(typeof (T).Name);          PropertyInfo[]

将DataTable转换成CSV文件

DataTable用于在.net项目中,用于缓存数据,DataTable表示内存中数据的一个表.CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记.CSV文件是个纯文本文件,每一行表示一张图片的许多属性. 在.net项目中运用C#将DataTable转化为CSV文件,现在提供一个较为通用的方法,具体代码如下:         /// <summary>         /// 将DataTable转换成CSV文件         /// &