datatable和list的转换
在开发中,把查询结果以DataTable返回很方便,但是在检索数据时又很麻烦,没有list<T>检索方便。但是数据以ILIST形式返回,就为我们在.NET中使用传统的数据绑定造成了不便。下面介绍datatable和list的相互转换
1.datatable转换为list
- public List<T> GetList<T>(DataTable table)
- {
- List<T> list = new List<T>();
- T t = default(T);
- PropertyInfo[] propertypes = null;
- string tempName = string.Empty;
- foreach (DataRow row in table.Rows)
- {
- t = Activator.CreateInstance<T>();
- propertypes = t.GetType().GetProperties();
- foreach (PropertyInfo pro in propertypes)
- {
- tempName = pro.Name;
- if (table.Columns.Contains(tempName))
- {
- object value = row[tempName];
- if (!value.ToString().Equals(""))
- {
- pro.SetValue(t, value, null);
- }
- }
- }
- list.Add(t);
- }
- return list.Count == ? null : list;
- }
2.list转换为datatable
- public DataSet ConvertToDataSet<T>(IList<T> list)
- {
- if (list == null || list.Count <= )
- {
- return null;
- }
- DataSet ds = new DataSet();
- DataTable dt = new DataTable(typeof(T).Name);
- DataColumn column;
- DataRow row;
- System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
- foreach (T t in list)
- {
- if (t == null)
- {
- continue;
- }
- row = dt.NewRow();
- for (int i = , j = myPropertyInfo.Length; i < j; i++)
- {
- System.Reflection.PropertyInfo pi = myPropertyInfo[i];
- string name = pi.Name;
- if (dt.Columns[name] == null)
- {
- column = new DataColumn(name, pi.PropertyType);
- dt.Columns.Add(column);
- }
- row[name] = pi.GetValue(t, null);
- }
- dt.Rows.Add(row);
- }
- ds.Tables.Add(dt);
- return ds;
- }
datatable和list的转换的更多相关文章
- [C#]Datatable和json互相转换操作
#region DataTable 转换为Json字符串实例方法 /// <summary> /// GetClassTypeJosn 的摘要说明 /// </summary> ...
- 利用反射实现DataTable 与 List<T> 转换
今天上班不太忙,就想着总结一下反射.扩展方法.以及lambda表达式的用法,自己就写了个小DEMO记录一下,希望各位大牛们看到后觉得不对的地方请及时提出.这篇文章中我只说明我的用法,作为一个备忘,基本 ...
- Datatable转实体 实体转换辅助类
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...
- datatable to list 方法转换
#region 实体转换 /// <summary> /// add extension method for datable /// </summary> /// <p ...
- C#中Datatable和List互相转换
其实早就该写的,哈哈,不过今天刚想起来注册,热热手,就写一下,哈哈. 直接上内容吧: 建立一个控制台应用程序, List<students> Studentlist = new List& ...
- DataTable 转换为ArrayList 再转换成 json 格式
//JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); //javaScriptSeriali ...
- DataTable与实体类互相转换
/// <summary> /// DataTable与实体类互相转换 /// </summary> /// <typeparam name="T"& ...
- DataTable转换成json字符串
将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...
- XML 与 DataSet/DataTable 互相转换实例(C#)——转载
// <summary> /// XML形式的字符串.XML文江转换成DataSet.DataTable格式 /// </summary> pub ...
随机推荐
- Linux下UPnP sample分析
一.UPnP简介 UPnP(Universal Plug and Play)技术是一种屏蔽各种数字设备的硬件和操作系统的通信协议.它是一种数字网络中间件技术,建立在TCP/IP.HTTP协 ...
- Android SQLite调试
调试SQLite的神器,再也不用自己去打Log了,只需简单的几个命令. adb shell setprop log.tag.SQLiteLog V adb shell setprop log.tag. ...
- 关于php语言的使用!
------php语言与JavaScript的使用 方法是相似 <script type="text/javascript"> </script>--js与 ...
- Java Thread 的 sleep() 和 wait() 的区别
Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别 1. sleep ...
- javascript中的函数式声明与变量式声明
观察下面两段代码,试写出hello('word');的运行结果: // 变量式声明 function hello(msg){ alert(msg); var msg = function(){}; a ...
- 多线程同步工具——CAS原子变量
这是我参考的一篇文章<基于CAS的乐观锁实现>,讲述的是一种需要CPU支持的执行技术CAS(Compare and Swap). 首先理解什么是原子性操作,意思是不能再拆分的操作,例如改写 ...
- 安卓Design之NavigationView的使用
前面讲解了Design包下的TabLayout的使用,下面将带来NavagationView和DrawLayout以及toolbar的联动. 项目已经同步至:https://github.com/na ...
- 你真的会玩SQL吗?透视转换的艺术
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- CSS教程:div垂直居中的N种方法以及多行文本垂直居中的方法
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
- 自己封装了一个EF的上下文类.,分享一下,顺便求大神指点
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...