思考、创新、坚持、执行

如果创新能改变人类的消费习惯,那么将对它所进入的领域产生深远影响,进而成就一家伟大的世界级企业;云翻译平台www.139fanyi.com.cn要去一切中心化

 

DataTable到范型转换

/// <summary>
/// 适合于实体类和DataTable对应的情况
/// </summary>

public class ConvertExtend
{
    //将泛型类转换成DataTable
    public static DataTable ToDataTable<T>(List<T> entitys)
    {
        DataTable dtResult = new DataTable();
        if (entitys == null || entitys.Count < 1)
        {
            throw new Exception("需转换的集合为空");
        }
        Type entityType = entitys[0].GetType();
        List<PropertyInfo> propertyInfoList = entityType.GetProperties().ToList<PropertyInfo>();
        foreach (PropertyInfo item in propertyInfoList)
        {
            dtResult.Columns.Add(new DataColumn(item.Name, item.PropertyType));
        }
        foreach (T entity in entitys)
        {
            DataRow dr = dtResult.NewRow();
            foreach (PropertyInfo item in propertyInfoList)
            {
                dr[item.Name] = item.GetValue(entity, null);
            }
            dtResult.Rows.Add(dr);
        }
        return dtResult;
    }
    //将泛型类转换成DataTable
    public static IList<T> ToList<T>(DataTable dt)
    {
        List<T> list = new List<T>();
        //T model = default(T);
        for (int iRow = 0; iRow < dt.Rows.Count; iRow++)
        {
            DataRow dr = dt.Rows[iRow];
            T t = (T)System.Activator.CreateInstance(typeof(T));
            List<PropertyInfo> listPropertyInfo = t.GetType().GetProperties().ToList<PropertyInfo>();
            foreach (PropertyInfo item in listPropertyInfo)
            {
                if (dr[item.Name] != DBNull.Value)
                {
                    item.SetValue(t, dr[item.Name], null);
                }
                else
                {
                    item.SetValue(t, (string)null, null);
                }
            }
            list.Add(t);
        }
        return list;
    }

}

posted on 2009-07-28 21:53  铭天  阅读(303)  评论(1编辑  收藏  举报

导航

中国翻译公司| 北京翻译公司| 北京翻译公司| 语通全球翻译公司| 同声传译|