网站技术
当前目录:首页 >> 新闻中心 >> 网站技术

C# DataTable转化成实体操作类

发布人:卓伟软件
发布日期:2014-05-14 10:35:26
浏览次数:1261

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Reflection;

using System.Data.SqlClient;

namespace AS.Public

{

   /// <summary>

   /// 数据表操作类

   /// 作者:jacky QQ:7092734 http://www.d369.net

   /// </summary>

   public class DataTableHelper

   {

       /// <summary>

       /// 数据表是否有数据

       /// </summary>

       /// <param name="dtTable">数据表</param>

       /// <returns></returns>

       public static Boolean isHasRows(DataTable dtTable)

       {

           return dtTable != null && dtTable.Rows.Count > 0;

       }

       /// <summary>

       /// DataTable转换成实体列表

       /// </summary>

       /// <typeparam name="T">实体 T </typeparam>

       /// <param name="table">datatable</param>

       /// <returns></returns>

       public static IList<T> DataTableToList<T>(DataTable table) where T : class

       {

           if (!isHasRows(table)) return new List<T>();

           IList<T> list = new List<T>();

           T model = default(T);

           foreach (DataRow dr in table.Rows)

           {

               model = Activator.CreateInstance<T>();

               foreach (DataColumn dc in dr.Table.Columns)

               {

                   object drValue = dr[dc.ColumnName];

                   PropertyInfo pi = model.GetType().GetProperty(dc.ColumnName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);

                   if (pi != null && pi.CanWrite && (drValue != null && !Convert.IsDBNull(drValue)))

                   {

                       pi.SetValue(model, drValue, null);

                   }

               }

               list.Add(model);

           }

           return list;

       }

       /// <summary>

       /// SqlDataReader 转换成实体列表

       /// </summary>

       /// <typeparam name="T">实体</typeparam>

       /// <param name="SQLDataReader">数据行集</param>

       /// <returns></returns>

       public static IList<T> SQLDataReaderToList<T>(SqlDataReader SQLDataReader) where T : class

       {

           if (!SQLDataReader.HasRows) return new List<T>();

           IList<T> list = new List<T>();

           T model = default(T);

           while (SQLDataReader.Read())

           {

               model = Activator.CreateInstance<T>();

               for (int i = 0; i < SQLDataReader.FieldCount; i++)

               {

                   object sdrValue = SQLDataReader[SQLDataReader.GetName(i)];

                   PropertyInfo pi = model.GetType().GetProperty(SQLDataReader.GetName(i), BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);

                   if (pi != null && pi.CanWrite && (sdrValue != null && !Convert.IsDBNull(sdrValue)))

                   {

                       pi.SetValue(model, sdrValue, null);

                   }

               }

               list.Add(model);

           }

           return list;

       }

       /// <summary>

       /// DataTable转换成实体

       /// </summary>

       /// <typeparam name="T">实体</typeparam>

       /// <param name="dtTable">数据表</param>

       /// <returns></returns>

       public static T DataTableToEntity<T>(DataTable dtTable) where T : class

       {

           IList<T> list = DataTableToList<T>(dtTable);

           if (list.Count > 0) return list[0];

           return null;

       }

       /// <summary>

       /// SqlDataReader 转换成实体

       /// </summary>

       /// <typeparam name="T">实体</typeparam>

       /// <param name="SQLDataReader">数据行</param>

       /// <returns></returns>

       public static T SQLDataReaderToEntity<T>(SqlDataReader SQLDataReader) where T : class

       {

           IList<T> list = SQLDataReaderToList<T>(SQLDataReader);

           if (list.Count > 0) return list[0];

           return null;

       }

   }

}


Copyright © 2010 - 2015 Zhuovi. All Rights Reserved
联系电话:15837199978  E-Mail:service@zhuovi.com  在线QQ:点击这里给我发消息 点击这里给我发消息  备案号:豫ICP备14022191号
郑州网站建设 | 河南网站建设 | 郑州软件 | 河南软件 | 办公软件 | 移动短信 | 注册域名 | 虚拟空间,网站空间 | 群发短信 | 网站优化 | 网站推广 | 优化技术 | 郑州作网站 | 河南作网站
在线咨询 返回顶部