CollectionConvertor

来源:互联网 发布:单身汉 知乎 编辑:程序博客网 时间:2024/05/20 15:12
using System;using System.Text;using System.Data;using System.Reflection;using System.Collections;using System.Collections.Specialized;namespace ABL.Common{public class CollectionConvertor{DataTable data = null;Type modelType = null;IList properties = null;public CollectionConvertor(DataTable data,Type modelType){this.data = data;this.modelType = modelType;InitialProperties();}/// <summary>/// 初始化属性/// </summary>protected virtual void InitialProperties(){if ((data != null) && (data.Rows.Count > 0)){Type type = modelType;PropertyInfo[] propertyInfoArray = type.GetProperties();if ((propertyInfoArray != null) && (propertyInfoArray.Length > 0)){properties = new ArrayList(propertyInfoArray);}}}/// <summary>/// 获取数据集合/// </summary>/// <returns></returns>public IList GetCollection(){IList collection = null;if ((properties != null) && (properties.Count > 0)){collection = new ArrayList();int dataTotalCount = data.Rows.Count;int propertyTotalCount = properties.Count;for (int dataCount = 0; dataCount < dataTotalCount; dataCount ++){object model = modelType.Assembly.CreateInstance(modelType.FullName,false,BindingFlags.CreateInstance,null,null,System.Globalization.CultureInfo.CurrentCulture,new object[0]);for(int propertyCount = 0; propertyCount < propertyTotalCount; propertyCount ++){PropertyInfo property = (PropertyInfo)properties[propertyCount];string columnName = property.Name;bool isNull = data.Rows[dataCount][columnName] == DBNull.Value;if (! isNull)property.SetValue(model,data.Rows[dataCount][columnName],null);}collection.Add(model);}}return collection;}}}
原创粉丝点击