此方法比较同一类的两个对象:
foreach (var field in fields.Where(field => !objTarget
.GetType().GetProperty(field).GetValue(objTarget, null)
.Equals(obj.GetType().GetProperty(field).GetValue(obj, null))))
如果两个属性都有值,它可以正常工作,但有时我在这两个对象之一中有一个null属性,我该如何处理呢?
编辑: 如果我比较两个对象,即:
var a = new Test();
var b = new Test();
a.Property1 = "1";
b.Property1 = null;
我得到空引用异常:
ConsoleApplication1.exe中出现未处理的“System.NullReferenceException”类型异常
答案 0 :(得分:4)
而不是使用LINQ和Where
方法获取变量值并将条件置于循环中:
foreach (var field in fields)
{
var val1 = objTarget.GetType().GetProperty(field).GetValue(objTarget, null);
var val2 = obj.GetType().GetProperty(field).GetValue(obj, null));
if(val1 == null and val2 != null || val1 != null && !val1.Equals(val2))
{
// your code
}
}