当布尔值相同时,与布尔值进行比较会得出false

时间:2018-07-02 03:05:26

标签: c# entity-framework

我正在尝试使用Entity Framework core 2.0实施审核表。但是,所有字段都将被保存,而不仅仅是已编辑的字段。我以为我可以做一个简单的if语句。如果旧值不等于新值,则它是更改后的值。

但是,这不适用于布尔值。两个真正的布尔值不相等。

这是我非常简单的代码:

                        if (property.OriginalValue != property.CurrentValue)
                        { 
                            auditEntry.OldValues[propertyName] = property.OriginalValue;
                            auditEntry.NewValues[propertyName] = property.CurrentValue;
                        }

enter image description here

希望,您可以在图像中看到OldValuesNewValues都是正确的,但如果不正确,它将落入if语句中。我希望有一个if语句,如果可能的话,该语句比较字符串,整数,布尔值等。

2 个答案:

答案 0 :(得分:0)

与property.OriginalValue和property.CurrentValue是2个对象这一事实有关。由于2不引用相同的对象,因此它们永远不相等。尝试使用.ToString()或类似的东西进行比较:property.IsModified

答案 1 :(得分:0)

使用此行修复它:

if (((property.OriginalValue != null) ? property.OriginalValue.ToString() : "" ) != ((property.CurrentValue != null) ? property.CurrentValue.ToString() : ""))