zoukankan
html css js c++ java
IListHelper 实现IList到DataSet和DataTable的数据转换
/**/
///
<summary>
///
List Transfer DataTable Class
///
</summary>
public
class
IListHelper
{
/**/
///
<summary>
///
Ilist
<T>
Transfer DataSet
///
</summary>
///
<param name="i_objlist"></param>
///
<returns></returns>
public
static
DataSet ConvertToDataSet
<
T
>
(IList
<
T
>
i_objlist)
{
if
(i_objlist
==
null
||
i_objlist.Count
<=
0
)
{
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
i_objlist)
{
if
(t
==
null
)
{
continue
;
}
row
=
dt.NewRow();
for
(
int
i
=
0
, 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;
}
/**/
///
<summary>
///
Ilist
<T>
Transfer DataTable
///
</summary>
///
<param name="i_objlist"></param>
///
<returns></returns>
public
static
DataTable ConvertToDataTable
<
T
>
(IList
<
T
>
i_objlist)
{
if
(i_objlist
==
null
||
i_objlist.Count
<=
0
)
{
return
null
;
}
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
i_objlist)
{
if
(t
==
null
)
{
continue
;
}
row
=
dt.NewRow();
for
(
int
i
=
0
, 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);
}
return
dt;
}
/**/
///
<summary>
///
Ilist Transfer DataTable
///
</summary>
///
<param name="i_objlist"></param>
///
<returns></returns>
public
static
DataTable ConvertToDataTable(IList i_objlist)
{
if
(i_objlist
==
null
||
i_objlist.Count
<=
0
)
{
return
null
;
}
DataTable dt
=
new
DataTable();
DataRow row;
System.Reflection.PropertyInfo[] myPropertyInfo
=
i_objlist[
0
].GetType().GetProperties();
foreach
(System.Reflection.PropertyInfo pi
in
myPropertyInfo)
{
if
(pi
==
null
)
{
continue
;
}
dt.Columns.Add(pi.Name, System.Type.GetType(pi.PropertyType.ToString()));
}
for
(
int
j
=
0
; j
<
i_objlist.Count; j
++
)
{
row
=
dt.NewRow();
for
(
int
i
=
0
; i
<
myPropertyInfo.Length; i
++
)
{
System.Reflection.PropertyInfo pi
=
myPropertyInfo[i];
row[pi.Name]
=
pi.GetValue(i_objlist[j],
null
);
}
dt.Rows.Add(row);
}
return
dt;
}
/**/
///
<summary>
///
Ilist Transfer DataSet
///
</summary>
///
<param name="i_objlist"></param>
///
<returns></returns>
public
static
DataSet ConvertToDataSet(IList i_objlist)
{
if
(i_objlist
==
null
||
i_objlist.Count
<=
0
)
{
return
null
;
}
DataSet ds
=
new
DataSet();
DataTable dt
=
new
DataTable();
DataRow row;
System.Reflection.PropertyInfo[] myPropertyInfo
=
i_objlist[
0
].GetType().GetProperties();
foreach
(System.Reflection.PropertyInfo pi
in
myPropertyInfo)
{
if
(pi
==
null
)
{
continue
;
}
dt.Columns.Add(pi.Name, System.Type.GetType(pi.PropertyType.ToString()));
}
for
(
int
j
=
0
; j
<
i_objlist.Count; j
++
)
{
row
=
dt.NewRow();
for
(
int
i
=
0
; i
<
myPropertyInfo.Length; i
++
)
{
System.Reflection.PropertyInfo pi
=
myPropertyInfo[i];
row[pi.Name]
=
pi.GetValue(i_objlist[j],
null
);
}
dt.Rows.Add(row);
}
ds.Tables.Add(dt);
return
ds;
}
}
查看全文
相关阅读:
爱奇艺大数据招聘
服务设计要解决的问题
化腐朽为神奇:简明日志规范
免费攻读人工智能专业,让自己的身价翻番
JAVA日志的前世今生
盖洛普Q12在团队中的应用
漫画:鉴权与安全访问控制的技术血脉
正确的git开发流程
'Attempt to create two animations for cell' iOS
Swift中的for循环基本使用
原文地址:https://www.cnblogs.com/adam/p/891324.html
最新文章
Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
[备忘][转]rsync使用时的常见问题
linux下安装anaconda
Linux下profile与bashrc的区别
本地安装python库
在python中重新导入模块
Windows下切换盘符
热门文章
python中安装dlib和cv2
pip更换下载源(提升下载速度)
python与VScode
学习方法
当网页无法正常显示时更换浏览器
那些年犯过的错
项目中必须对应的隐性需求-安全漏洞修复
不够聪明所以选择工程?
面试官视角看面试
知名互联网公司需要什么样的人才
Copyright © 2011-2022 走看看