02
2016
09

C#、Asp.Net 对比两个实体信息前后是否有所改变(结构相同和不相同)

在一些项目中可能需要比较内容是否有所改变,可以使用对比的方法来判断是否内容有所改变(对比某个特定的字段,可以不是所有的都比较),下面是比较笨的方法:

public static string compareStr = "HouseName,HouseType,HouseNum,Status"; //需要对比的字段名
/// <summary>
/// 对比两个实体信息前后是否一致,需要通过compareStr来判断对比那些字段(实体结构不相同)
/// </summary>
/// <param name="oldair">老的乘客信息</param>
/// <param name="newair">新改的乘客信息</param>
/// <returns></returns>
public static int compareAirPassenger<T1, T2>(T1 oldair, T2 newair)
{
    int isUpdate = 0;
    System.Reflection.PropertyInfo[] mPi = typeof(T1).GetProperties();
    System.Reflection.PropertyInfo[] mPi1 = typeof(T2).GetProperties();
    for (int i = 0; i < mPi.Length; i++)
    {
        System.Reflection.PropertyInfo pi = mPi[i];
        for (int j = 0; j < mPi1.Length; j++)
        {
            System.Reflection.PropertyInfo pi1 = mPi1[j];
            if (pi.Name == pi1.Name)
            {
                object oldValue = pi.GetValue(oldair, null);
                object newValue = pi1.GetValue(newair, null);

                if (compareStr.IndexOf(pi.Name + ",") > -1 && oldValue != null && newValue != null && oldValue.ToString().Trim() != newValue.ToString().Trim())
                {
                    isUpdate = 1;
                    break;
                }
            }
        }
    }
    return isUpdate;
}
/// <summary>
/// 对比两个实体信息前后是否一致,需要通过compareStr来判断对比那些字段(实体结构相同)
/// </summary>
/// <param name="oldair">老的实体信息</param>
/// <param name="newair">新改的实体信息</param>
/// <returns></returns>
public static int compareAirPassenger<T>(T oldair, T newair)
{
    int isUpdate = 0;
    System.Reflection.PropertyInfo[] mPi = typeof(T).GetProperties();
    for (int i = 0; i < mPi.Length; i++)
    {
        System.Reflection.PropertyInfo pi = mPi[i];

        object oldValue = pi.GetValue(oldair, null);
        object newValue = pi.GetValue(newair, null);

        if (compareStr.IndexOf(pi.Name + ",") > -1 && oldValue != null && newValue != null && oldValue.ToString().Trim() != newValue.ToString().Trim())
        {
            isUpdate = 1;
            break;
        }
    }
    return isUpdate;
}

实体结构相同的比较使用:

HouseInfo houseInfo = new HouseInfo(); //新的实体对象,赋值后进行比较

HouseInfo b_HouseInfo = new HouseInfo(); //上一次的实体对象,读取后进行比较

if(ClassCode.compareAirPassenger<HouseInfo>(b_HouseInfo, houseInfo) > 0) //大于0时,表示有所改变

实体结构不相同的需要比较的要是实体里面的字段,比较方法一样: //compareStr需要两个实体都要有

HouseInfo b_HouseInfo = new HouseInfo();

BackUp_HouseInfo backUp_HouseInfo = new BackUp_HouseInfo();

if(ClassCode.compareAirPassenger<HouseInfo, BackUp_HouseInfo>(houseInfo, backUp_HouseInfo) > 0) //大于0时,表示有所改变

« 上一篇下一篇 »

评论列表:

分享网上赚钱靠谱的方法
2.卢松松博客  2016/9/19 20:33:56 回复该留言
从百度点进来的,支持一下,希望站长您多出一些好文章。
3.任务易  2016/9/20 18:21:01 回复该留言
博主写的很好,谢谢分享经验
4.代写essay  2017/4/3 17:17:43 回复该留言
感谢楼主的分享
谢谢博主分享 支持 户外射箭装备
6.压力机  2017/6/2 11:27:00 回复该留言
您好,您的网站做的很不错,很漂亮,我已经收藏了,方便我随时访问.
7.新闻头条  2017/10/30 15:32:10 回复该留言
文章不错非常喜欢
8.新闻头条  2017/10/30 15:32:42 回复该留言
感谢分享
9.头条新闻  2017/12/9 11:25:29 回复该留言
文章不错非常喜欢
10.耐火砖  2018/1/12 14:30:27 回复该留言
感谢博主的分享!
11.rushessay.com  2018/1/26 19:55:22 回复该留言
感谢楼主的分享

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。