using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OracleClient;
using System.Configuration;
using System.Text.RegularExpressions;
using DataAccess;
using System.Diagnostics;
using System.Reflection;
namespace Business
{
/// <summary>
/// 实体类转换
/// </summary>
/// <typeparam name="T"></typeparam>
public class CModelTableFill<T> where T : new()
{
/// <summary>
/// 填充多个实体类对象
/// </summary>
/// <param name="dt">数据集</param>
/// <returns>实体类</returns>
public List<T> FillModel(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0)
{
return null;
}
T t = new T();
List<T> modelList = new List<T>();
PropertyInfo[] arrayInfo = t.GetType().GetProperties();

foreach (DataRow itemRow in dt.Rows)
{
T model = new T();
foreach (DataColumn itemColumn in dt.Columns)
{
foreach (PropertyInfo info in arrayInfo)
{
if (info.Name.ToUpper() == itemColumn.ColumnName)
{
if (itemRow[itemColumn.ColumnName] != DBNull.Value)
{
info.SetValue(model, itemRow[itemColumn.ColumnName].ToString(), null);
}
}
}
}
modelList.Add(model);
}
return modelList;
}
/// <summary>
/// 填充一个实体类对象
/// </summary>
/// <param name="dt">数据集</param>
/// <returns>实体类</returns>
public T FillModelRow(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0)
{
return default(T);
}
T model = new T();
PropertyInfo[] arrayInfo = model.GetType().GetProperties();
for (int i = 0; i < dt.Columns.Count; i++)
{
foreach (PropertyInfo info in arrayInfo)
{
if (info.Name.ToUpper() == dt.Columns[i].ColumnName)
{
if (dt.Rows[0][i] != DBNull.Value)
{
info.SetValue(model, dt.Rows[0][i].ToString(), null);
break;
}
}
}
}
return model;
}
}
}

DataTable转换实体类的更多相关文章

  1. DataTable与实体类互相转换

    /// <summary> /// DataTable与实体类互相转换 /// </summary> /// <typeparam name="T"& ...

  2. DataTable与实体类的转换

    多年前写的DataTable与实体类的转换,已放github 阅读目录 介绍 起因 代码 UnitTest GitHub 介绍 很多年前一直使用Ado.net,后来慢慢转型到其他的orm,在转型过程中 ...

  3. 【转】DataTable与实体类互相转换

    原文地址:https://www.cnblogs.com/marblemm/p/7084797.html /// <summary> /// DataTable与实体类互相转换 /// & ...

  4. DataTable和实体类之间的转换

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...

  5. DataTable转实体类

    /// <summary> /// DataTable与实体类互相转换 /// </summary> /// <typeparam name="T"& ...

  6. DataTable和实体类通过反射相互转换

    using System.Runtime.Serialization; using System.Data; using System.Reflection; using System.Collect ...

  7. datatable与实体类之间相互转化的几种方法

    #region DataTable转换成实体类 /// <summary> /// 填充对象列表:用DataSet的第一个表填充实体类 /// </summary> /// & ...

  8. .net 根据匿名类生成实体类,根据datatable生成实体类,根据sql生成实体类

    在开发中可能会遇到这几种情况 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要 ...

  9. C# DataTable 转 实体类

    C# 中查询结果DataTable转实体类: 比如:List<RtmInterview> rtmList = GetDataById( id); public List<RtmInt ...

随机推荐

  1. PLA能收敛的证明

    题:如果资料D线性可分,PLA如何保证最后能得到最优解. 思路:假设$w_f$能够分割资料D,$w_{t+1}$经过更新$w_{t+1}=w_t + y_{n(t)}x_{n(t)}$后,与$w_f$ ...

  2. aix knowlgdgecenter

    http://www-01.ibm.com/support/knowledgecenter/ssw_aix_53/com.ibm.aix.install/doc/insgdrf/HT_insgdrf_ ...

  3. Introducing Regular Expressions 学习笔记

    Introducing Regular Expressions 读书笔记 工具: regexbuddy:http://download.csdn.net/tag/regexbuddy%E7%A0%B4 ...

  4. 网易云课堂_程序设计入门-C语言_第二周:判断_2信号报告

    2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength)    信号强度即大小. 其中R位于报告第一 ...

  5. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

  6. iOS极光推送的基本使用

    昨天花了一下午的时间研究了下极光推送,也前也是没做过,不知道从何下手!才开始的时候一看官方的SDK感觉好难,不过经过一系列的捣鼓之后,手机收到了推送信息,感觉其实并没有那么难! 1.配置开发证书(得有 ...

  7. api(一) 创建窗口 (转)

    所有的Windows SDK编程都有一个类似的框架,本文就说说这个框架,Windows程序设计的框架分为“三部曲”: 一.注册窗口类 注册窗口类的API函数是RegisterClass或者Regist ...

  8. PHP获取中文汉字首字母方法

    function getFirstLetter($str){ $fchar = ord($str{0}); if($fchar >= ord("A") and $fchar ...

  9. xHTML+div布局:三个div,两边div宽度固定,中间div宽度自适应

    xHTML+div经常考题:三个div,两边div宽度固定,中间div宽度自适应. 和大家分享一个实现方式: 1.html代码 <div class="dyleft"> ...

  10. js previousSibling兼容使用方法

    使用previousSibling的时候发现当前元素跟上一个元素之间有空格就不获取不到对象, 查资料才知道除了ie外js的previousSibling获取的对象包括空格! 兼容方法如下: funct ...