C#NET DataTable帮助类Word格式.docx
- 文档编号:21763931
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:13
- 大小:16.76KB
C#NET DataTable帮助类Word格式.docx
《C#NET DataTable帮助类Word格式.docx》由会员分享,可在线阅读,更多相关《C#NET DataTable帮助类Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
if(!
dt.Columns.Contains("
identityid"
))
dt.Columns.Add("
);
for(inti=0;
i<
dt.Rows.Count;
i++)
dt.Rows[i]["
]=(i+1).ToString();
}
returndt;
///检查DataTable是否有数据行
<
publicstaticboolIsHaveRows(DataTabledt)
if(dt!
=null&
&
dt.Rows.Count>
0)
returntrue;
returnfalse;
///DataTable转换成实体列表
typeparamname="
T"
实体T<
/typeparam>
table"
datatable<
publicstaticIList<
T>
DataTableToList<
(DataTabletable)
whereT:
class
IsHaveRows(table))
returnnewList<
();
IList<
list=newList<
Tmodel=default(T);
foreach(DataRowdrintable.Rows)
model=Activator.CreateInstance<
foreach(DataColumndcindr.Table.Columns)
obxxxxjectdrValue=dr[dc.ColumnName];
PropertyInfopi=model.GetType().GetProperty(dc.ColumnName);
if(pi!
pi.CanWrite&
(drValue!
!
Convert.IsDBNull(drValue)))
pi.SetValue(modeldrValuenull);
list.Add(model);
returnlist;
///实体列表转换成DataTable
实体<
list"
实体列表<
publicstaticDataTableListToDataTable<
(IList<
list)
if(list==null||list.Count<
=0)
returnnull;
DataTabledt=newDataTable(typeof(T).Name);
DataColumncolumn;
DataRowrow;
PropertyInfo[]myPropertyInfo=typeof(T).GetProperties(BindingFlags.Public|BindingFlags.Instance);
intlength=myPropertyInfo.Length;
boolcreateColumn=true;
foreach(Ttinlist)
if(t==null)
continue;
row=dt.NewRow();
length;
PropertyInfopi=myPropertyInfo[i];
stringname=pi.Name;
if(createColumn)
column=newDataColumn(namepi.PropertyType);
dt.Columns.Add(column);
row[name]=pi.GetValue(tnull);
createColumn=false;
dt.Rows.Add(row);
///将泛型集合类转换成DataTable
集合项类型<
集合<
数据集(表)<
publicstaticDataTableToDataTable<
returnToDataTable<
(listnull);
propertyName"
需要返回的列的列名<
listparamsstring[]propertyName)
List<
string>
propertyNameList=newList<
if(propertyName!
=null)
propertyNameList.AddRange(propertyName);
DataTableresult=newDataTable();
if(list.Count>
PropertyInfo[]propertys=list[0].GetType().GetProperties();
foreach(PropertyInfopiinpropertys)
if(propertyNameList.Count==0)
result.Columns.Add(pi.Namepi.PropertyType);
else
if(propertyNameList.Contains(pi.Name))
list.Count;
ArrayListtempList=newArrayList();
obxxxxjectobj=pi.GetValue(list[i]null);
tempList.Add(obj);
obxxxxject[]array=tempList.ToArray();
result.LoadDataRow(arraytrue);
returnresult;
///根据nameList里面的字段创建一个表格返回该表格的DataTable
nameList"
包含字段信息的列表<
publicstaticDataTableCreateTable(List<
nameList)
if(nameList.Count<
DataTablemyDataTable=newDataTable();
foreach(stringcolumnNameinnameList)
myDataTable.Columns.Add(columnNametypeof(string));
returnmyDataTable;
///通过字符列表创建表字段,字段格式可以是:
///1)abcde
///2)a|intb|stringc|boold|decimal
nameString"
publicstaticDataTableCreateTable(stringnameString)
string[]nameArray=nameString.Split(newchar[]{'
'
'
;
});
nameList=newList<
DataTabledt=newDataTable();
foreach(stringiteminnameArray)
string.IsNullOrEmpty(item))
string[]subItems=item.Split('
|'
if(subItems.Length==2)
dt.Columns.Add(subItems[0]ConvertType(subItems[1]));
dt.Columns.Add(subItems[0]);
privatestaticTypeConvertType(stringtypeName)
typeName=typeName.ToLower().Replace("
system."
"
"
TypenewType=typeof(string);
switch(typeName)
case"
boolean"
:
bool"
newType=typeof(bool);
break;
int16"
short"
newType=typeof(short);
int32"
int"
newType=typeof(int);
long"
int64"
newType=typeof(long);
uint16"
ushort"
newType=typeof(ushort);
uint32"
uint"
newType=typeof(uint);
uint64"
ulong"
newType=typeof(ulong);
single"
float"
newType=typeof(float);
string"
newType=typeof(string);
guid"
newType=typeof(Guid);
decimal"
newType=typeof(decimal);
double"
newType=typeof(double);
datetime"
newType=typeof(DateTime);
byte"
newType=typeof(byte);
char"
newType=typeof(char);
returnnewType;
///获得从DataRowCollection转换成的DataRow数组
drc"
DataRowCollection<
publicstaticDataRow[]GetDataRowArray(DataRowCollectiondrc)
intcount=drc.Count;
DataRow[]drs=newDataRow[count];
count;
drs[i]=drc[i];
returndrs;
///将DataRow数组转换成DataTable,注意行数组的每个元素须具有相同的数据结构,
///否则当有元素长度大于第一个元素时,抛出异常
rows"
行数组<
publicstaticDataTableGetTableFromRows(DataRow[]rows)
if(rows.Length<
returnnewDataTable();
DataTabledt=rows[0].Table.Clone();
dt.DefaultView.Sort=rows[0].Table.DefaultView.Sort;
rows.Length;
dt.LoadDataRow(rows[i].ItemArraytrue);
///排序表的视图
sorts"
publicstaticDataTableSortedTable(DataTabledtparamsstring[]sorts)
if(dt.Rows.Count>
stringtmp="
sorts.Length;
tmp+=sorts[i]+"
dt.DefaultView.Sort=tmp.TrimEnd('
///根据条件过滤表的内容
condition"
publicstaticDataTableFilterDataTable(DataTabledtstringcondition)
if(condition.Trim()=="
)
DataTablenewdt=newDataTable();
newdt=dt.Clone();
DataRow[]dr=dt.Select(condition);
dr.Length;
newdt.ImportRow((DataRow)dr[i]);
returnnewdt;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# NET DataTable帮助类 DataTable 帮助