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;
}
}
查看全文
相关阅读:
[WPF系列] 需要区分的内容
[WPF系列]基础 Listening to Dependency Property change notifications of a given Element
[WPF系列]-基础系列 Property Trigger, DataTrigger & EventTrigger
[WPF系列]-高级部分 Shadowed TextBox
[WPF系列]-Adorner
[WPF系列]-使用Binding来同步不同控件的Dependency property
各类型液晶电视面板解析
数据库 --> 8种NoSQL数据库对比
数据库 --> 5种关系型数据库比较
云计算 --> 三种服务模式IaaS,PaaS,SaaS
原文地址:https://www.cnblogs.com/adam/p/891324.html
最新文章
Windows共享内存示例
WPF Tookit Chart
MVC MemeberShip vs. Asp.net Identity
TFS修改项目名称
EF6 DataMigration 从入门到进阶
使用Vmware虚拟机部署开发环境之Mac OS X系统安装
转《WF编程》笔记目录
[WPF系列]-Layout
Xamarin Error cannot find ‘aapt.exe’
Entity Framework 6 with MySql
热门文章
C# Regex实例
【WPF系列】基础 PasswordBox
【WPF高级】Cue or Hint or Watermark or Placehoder in Controls(为控件添加提示,水印,占位符)
【WPF系列】Textbox
EF高级应用
MVVM中数据验证之 ViewModel vs. Model
WPF文章资源库
EF optimize the perfermance
WPF GUI基础知识
[WPF系列]基础Combox
Copyright © 2011-2022 走看看