• 反射使用 非空表向空表赋值


    应用场景

      现有两张表,表A,表B(历史表) ,需将表A中与表B中相同字段的数据进行赋值到表B中

    分为两种实现情况

    一、表B中没有任何数据

    二、表B中有数据非空

     /// <summary>
        /// 实体转换类
        /// </summary>
        public class EntityCoverter
        {
            /// <summary>
            /// 将源实体转换到空的实体类中
            /// </summary>
            /// <typeparam name="T1"></typeparam>
            /// <typeparam name="T2"></typeparam>
            /// <param name="source"></param>
            /// <returns></returns>
            public static T2 Covert<T1, T2>(T1 source)
            {
                T2 result = default(T2);
    
                PropertyInfo[] pi = typeof(T2).GetProperties();
    
                PropertyInfo[] pi1 = typeof(T1).GetProperties();
    
                result = Activator.CreateInstance<T2>();
    
                for (int i = 0; i < pi.Length; i++)
                {
                    PropertyInfo temp = pi1.Where(t => t.Name == pi[i].Name).FirstOrDefault();
                    if (temp != null)
                    {
                        try
                        {
                            pi[i].SetValue(result, temp.GetValue(source, null), null);
                        }
                        catch(Exception ex)
                        {
    
                        }
                    }
                }
                return result;
            }
    
            /// <summary>
            /// 将源实体转换到非空的实体中
            /// </summary>
            /// <typeparam name="T1"></typeparam>
            /// <typeparam name="T2"></typeparam>
            /// <param name="source"></param>
            /// <param name="destination"></param>
            /// <returns></returns>
            public static T2 Covert<T1, T2>(T1 source,T2 destination)
            {
                PropertyInfo[] pi = typeof(T2).GetProperties();
    
                PropertyInfo[] pi1 = typeof(T1).GetProperties();
    
                for (int i = 0; i < pi.Length; i++)
                {
                    PropertyInfo temp = pi1.Where(t => t.Name == pi[i].Name).FirstOrDefault();
                    if (temp != null)
                    {
                        try
                        {
                            pi[i].SetValue(destination, temp.GetValue(source, null), null);
                        }
                        catch
                        {
                        }
                    }
                }
                return destination;
            }
        }

    调用方法

               
                var list =  获取表A值,将表A的值处理成一个list集合ToList();
                List<B> result = new List<B>();
                foreach (var item in list)
                {
                    var simple = EntityCoverter.Covert<A, B>(item);
                    result.Add(simple);
                }
              return  result;
  • 相关阅读:
    七牛云上传文件
    微博三方登录
    异步任务 --- django-celery
    阿里云短信服务
    Redis五大数据结构和使用方法
    千万不要买我们家的鞋子!
    Firebug控制台详解
    【转】android 按home键返回到桌面后,再按桌面应用图标又重新打开该应用的解决方法
    【转】android中webview使用的一些细节
    JSONException: Value of type java.lang.String cannot be converted to JSONObject
  • 原文地址:https://www.cnblogs.com/macT/p/9934311.html
Copyright © 2020-2023  润新知