在一些项目中可能需要比较内容是否有所改变,可以使用对比的方法来判断是否内容有所改变(对比某个特定的字段,可以不是所有的都比较),下面是比较笨的方法:
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时,表示有所改变
评论列表: