DataTable 和List 相互转换
来源:互联网 发布:淘宝上买水果 编辑:程序博客网 时间:2024/05/16 10:39
最近自从公司的开发环境改了. 从VS2003 改到VS2008 后 用了C# 3.0 的新东西 自己积累的方法就慢慢的多起来了.
由于经常使用以前经常DataTable 现在都使用List<T> 就此需要经常转换.. 用的多了 自然需要写个简单的方法来实现互相转换
由于C#3.0出现了扩展方法 我们可以通过这样一个特性来简化我们的开发.
DataTable 转换为List<T> 的我们可以通过扩展DataTable来简化
/// <summary>
/// 转换为一个DataTable
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static DataTable ToDataTable<TResult>(this IEnumerable<TResult> value) where TResult : class
{
//创建属性的集合
List<PropertyInfo> pList = new List<PropertyInfo>();
//获得反射的入口
Type type = typeof(TResult);
DataTable dt = new DataTable();
//把所有的public属性加入到集合 并添加DataTable的列
Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p);dt.Columns.Add(p.Name, p.PropertyType); });
foreach (var item in value)
{
//创建一个DataRow实例
DataRow row = dt.NewRow();
//给row 赋值
pList.ForEach(p => row[p.Name] = p.GetValue(item, null));
//加入到DataTable
dt.Rows.Add(row);
}
return dt;
}
}
相反 的也需要List<T> 转换为DataTable 我们可以通过扩展IEnumberable<T> 来实现
可以通过上面的代码看出 都是主要通过反射 来实现的. 反射的效率似有点慢. 但是可以接受..
当然你也可以通过表达式树 动态的构造Lambda表达式来提高效率..
- DataTable 和List 相互转换
- DataTable 和List 相互转换
- DataTable 和List 相互转换
- DataTable 和List 相互转换
- DataTable 和List 相互转换
- List和DataTable相互转换
- 通过反射来实现:DataTable 和List 相互转换
- C# DataTable 和List之间相互转换的方法[转]
- C# DataTable 和List之间相互转换的方法
- asp.net中DataTable和List<T>之间相互转换
- C# DataTable 和List之间相互转换的方法
- C# DataTable 和List之间相互转换的方法
- C# DataTable 和List之间相互转换的方法
- 用Linq和Dataview筛选查询DataTable数据,DataTable和List相互转换
- DataTable和list转换
- dataTable和json相互转换
- c# Json List DataTable 数据相互转换
- Json List<T> DataTable 数据相互转换
- 系统还原(快照)VS系统备份
- javascript调用 vbscript的dateAdd函数
- eweb上传漏洞修补
- Request.ServerVariables参考
- @Resource和@Autowire的区别
- DataTable 和List 相互转换
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContex
- 关于php中的print EOF
- 面向对象软件的测试
- MVC
- JDK6新特性,JAVA获得机器MAC地址的方法
- 用c#读取并分析sql2005日志
- Linux的那些事儿(11)----awk的使用
- [JavaScript][页面定位]锚的简单使用