好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#对比两个实体类 是否一致。

    /// <summary>

    /// C#对比两个实体类 是否一致。

    /// </summary>

    public class CtrstM

    {

        /// <summary>

        /// 深度复制

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="obj"></param>

        /// <returns></returns>

        public static T DeepCopy<T>(T obj)

        {

            MemoryStream memoryStream = new MemoryStream();

            BinaryFormatter binaryFormatter = new BinaryFormatter();

            binaryFormatter.Serialize(memoryStream, obj);

            memoryStream.Seek(0, SeekOrigin.Begin);

            var t = (T)binaryFormatter.Deserialize(memoryStream);

            return t;

        }

        /// <summary>

        /// 对比是否有修改

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="t"></param>

        /// <param name="s"></param>

        /// <returns></returns>

        public static bool ForCheck<T>(T t,T s)

        {

            Type type = typeof(T);

            PropertyInfo[] ps = type.GetProperties();

            int rst = 0;

            foreach (PropertyInfo pp in ps)

            {

                var val_t = pp.GetValue(t);

                var val_s = pp.GetValue(s);

               

                if (val_s == null)

                {

                    val_s="";

                }

                if (val_t == null)

                {

                    val_t = "";

                }

                if (val_t.GetType() == typeof(String))//深度复制  字符串差异-> 无转空、大写转小写、首字母加空格

                {

                    if (val_s == null) val_s = "";

                   

                    

                    if (val_t.ToString().ToUpper() == val_s.ToString().ToUpper())

                    {

                        continue;

                    }

                    if (val_t.ToString().Trim() == val_s.ToString().Trim())

                    {

                        continue;

                    }

                }

                if (!Equals(val_t, val_s))

                    rst++;

            }

            return rst == 0;//没改

        }

    }


查看更多关于C#对比两个实体类 是否一致。的详细内容...

  阅读:21次