zoukankan      html  css  js  c++  java
  • C#将SqlDataReader转换成泛型类

            public static T DataReaderToEntity<T>(IDataReader dr, T entity)
            {
                try
                {
                    PropertyInfo[] pilist = entity.GetType().GetProperties();
                    foreach (PropertyInfo pi in pilist)
                    {
                        for (int i = 0; i < dr.FieldCount; i++)
                        {
                            if (pi.Name.Equals(dr.GetName(i)))
                            {
                                pi.SetValue(entity, Convert.ChangeType(dr[i], pi.PropertyType), null);
                            }
                        }
                    }
                    return entity;
                }
                catch
                {
                    return default(T);
                }
            }

    上面的方法利用反射读取SqlDataReader对应值。红色部分转换为相应的类型

    有时候会有一些特殊情况,比如Guid和string之间的转换可能会报错,object must implement IConvertible

    那么需要加入前置判断

                                if (!dr[i].GetType().IsPrimitive)
                                {string me = dr[i].ToString();
                                        pi.SetValue(entity, me, null);                                
                                }

    因为直接使用Convert.ChangeType会报错

    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    poj3253Fence Repair (Huffman)
    poi3617Best Cow Line ——贪心法
    高级排序之——归并排序
    Aizu
    初级排序——冒泡排序
    cookie会话
    加载web资源文件
    servlet
    Http

  • 原文地址:https://www.cnblogs.com/AduBlog/p/15076289.html
Copyright © 2011-2022 走看看