zoukankan      html  css  js  c++  java
  • DataTable或者DataRow转换对象

     public static IEnumerable<T> ConvertObject<T>(DataTable dt) where T : new()
            {
    
                var v = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
                List<PropertyInfo> Fields = new List<PropertyInfo>();
                foreach (var s in v)
                {
                    if (dt.Columns.Contains(s.Name))
                        Fields.Add(s);
                }
    
                foreach (DataRow dr in dt.Rows)
                {
                    T t = new T();
                    foreach (var s in Fields)
                    {
                        if (object.Equals(dr[s.Name], DBNull.Value)) continue;
                        s.SetValue(t, dr[s.Name], null);
                    }
                    yield return t;
                }
            }
    
            public static T ConvertObject<T>(DataRow dr) where T : new()
            {
    
                var v = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
    
                T t = new T();
                foreach (var s in v)
                {
                    if (dr.Table.Columns.Contains(s.Name))
                    {
                        s.SetValue(t, dr[s.Name], null);
                    }
    
                }
    
                return t;
    
            }

    Bug,

    1.如果泛型对象(T)属性的类型和DataTable列的类型不一致,抛异常  ---懒得解决

    2.DBNull.value转换失败,新方法

      public static T ConvertObject<T>(DataRow dr) where T : new()
            {
    
                var v = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
    
                T t = new T();
                foreach (var s in v)
                {
                    if (dr.Table.Columns.Contains(s.Name))
                    {
                        if (object.Equals(dr[s.Name], DBNull.Value)) continue;
                        {
                            s.SetValue(t, dr[s.Name]);
                        }
                    }
    
                }
    
                return t;
    
            }
    慎于行,敏于思!GGGGGG
  • 相关阅读:
    在markdown中使用html
    乘车路线
    渔民的烦恼
    GEDIT外部工具
    模板匹配,以图找图(九)
    SpringBoot起飞系列-国际化(六)
    [Lyndon分解] HDU 6761 Minimum Index
    [数论]HDU 6750 Function 百度之星2020初赛第一场H题
    【雅思】【口语】描述一个可笑的场合
    面试回答数据库优化问题-数据库优化思路八点
  • 原文地址:https://www.cnblogs.com/GarsonZhang/p/5291931.html
Copyright © 2011-2022 走看看