Instead of using LINQ and Where
method get the values to variables and put your condition inside loop:
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
}
}