DataTable与数组相互转换
来源:互联网 发布:java二分法递归 编辑:程序博客网 时间:2024/05/16 17:25
原文地址:http://hi.baidu.com/fxb_hyb/blog/item/ef80aba25e8e60a5cbefd0de
using System;
using System.Data;
using System.Data.OleDb;
namespace pxkt_datatable
{
class pxkt
{
}
class test
{
}
}
来自:http://www.cnblogs.com/peirunou/archive/2008/12/04/1347753.html
来自:http://hi.baidu.com/qingcaodeng13/blog/item/633eb20941f8a5a92fddd4c2
int row=DataTable1.Rows.Count;
int col=DataTable1.Columns.Count;
int[,] tb=new int[row,col];
for(int r=0;r<row;r++)
{
for(int c=0;c<col;c++)
{
tb[r,c]=int.Parse(DataTable1.Rows[r][c].ToString());
}
}
DataTable1是DataTable的一个实例,tb为所得的二维数组
来自:http://zhidao.baidu.com/question/32876214.html
在最近做的一个案子里,需要绑定实体数组比如Materiel[]绑定到界面(winform/webform都有),虽然可以直接绑定数组到GridView,但排序,过滤,查找等操作在数组里不是很方便。所以想借用DataTable做数据源。
最简单的方法就是手动建一个DataTable。为每个Materiel的property建一个Column,然后指明其数据类型。建好Table之后,循环为每个Materiel创建一个新行。如果多有几个界面,虽然做起来都差不多,但代码很难重用。
另外数据都是从WebService获取,form不允许直接访问DB,所以也不能通过ADO.net获取DataTable。
经过一段时间的考量后决定见一个专用的Utility类EntityCollectionsConvert
DataTable ToDataTable(object[] entitys);
DataTable
实现的原理也比较简单
1.将判断entitys不为空;
2.取出entitys的所有property
3.在DataTable中为每个property添加一列(包括元素类型)
4.为每个entity添加一行。
5.自动生成单元测试,测试,添加到项目中
1 public static DataTable ToDataTable<T>(List<T> entitys) 2 { 3 4 //检查实体集合不能为空 5 if (entitys ==null|| entitys.Count<1) 6 { 7 throw new Exception("需转换的集合为空"); 8 } 9 - 10
//取出第一个实体的所有Propertie - 11
Type entityType= entitys[0].GetType(); - 12
PropertyInfo[] entityProperties= entityType.GetProperties(); - 13
- 14
//生成DataTable的structure - 15
//生产代码中,应将生成的DataTable结构Cache起来,此处略 - 16
DataTable dt = new DataTable(); - 17
for (int i = 0; i < entityProperties.Length; i++) - 18
{ - 19
dt.Columns.Add(entityProperties[i].Name,entityProperties[i].PropertyType); - 20
} - 21
- 22
//将所有entity添加到DataTable中 - 23
foreach (object entity in entitys) - 24
{ - 25
//检查所有的的实体都为同一类型 - 26
if (entity.GetType()!=entityType) - 27
{ - 28
throw new Exception("要转换的集合元素类型不一致"); - 29
} - 30
object[] entityValues = new object[entityProperties.Length]; - 31
for (int i = 0; i < entityProperties.Length; i++) - 32
{ - 33
entityValues[i] = entityProperties[i].GetValue(entity, null); - 34
- 35
} - 36
dt.Rows.Add(entityValues); - 37
} - 38
return dt; - 39
}
- DataTable与数组相互转换
- json与DataTable相互转换
- DataTable与Linq相互转换
- DataTable与Linq相互转换
- DataTable与Linq相互转换方法
- Xml与DataTable相互转换方法
- Xml与DataTable相互转换方法
- DataTable与Linq相互转换方法
- json与datatable的相互转换
- DataTable与Linq相互转换方法
- DataTable 与 实体之间相互转换
- xml与datatable间相互转换
- List<T>与DataTable相互转换
- C#中List与DataTable相互转换
- 数组与arrayList相互转换
- List与数组相互转换
- c#中DataTable与实体集合相互转换
- C#之DataTable与实体集合相互转换
- Mesos高可用解决方案剖析
- Android中ActionBar的使用
- 常用加密算法比较
- Android获取WebView的UserAgent
- 设计模式之访问者模式
- DataTable与数组相互转换
- butterknife:8.0.1 在android studio 中可以注册,运行时报空指针问题
- Unity中的Path对应各平台中的Path
- 零散概念
- leetcode ShortestWordDistanceII
- 拖放事件原理及实现详解
- 大数据环境平台DW部分目录路径(final)
- PHP时间戳,时间日期的处理
- 2016.7.18