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