/// <summary> /// Compares two PropertyValue objects on specific way - used for joins. /// </summary> /// <param name="first"></param> /// <param name="second"></param> /// <returns>TRUE if condition is fulfilled and FALSE in other case.</returns> public static bool operator ==(PropertyValue first, PropertyValue second) { if (Object.ReferenceEquals(first, null) && Object.ReferenceEquals(second, null)) { return(true); } else if ((Object.ReferenceEquals(first, null) && !Object.ReferenceEquals(second, null)) || (!Object.ReferenceEquals(first, null) && Object.ReferenceEquals(second, null))) { return(false); } else { if (!CompareHelper.CompareLists(first.longValues, second.longValues)) { return(false); } else if (!CompareHelper.CompareLists(first.stringValues, second.stringValues)) { return(false); } else if (!CompareHelper.CompareLists(first.floatValues, second.floatValues)) { return(false); } return(true); } }
public static bool operator ==(Property first, Property second) { if (Object.ReferenceEquals(first, null) && Object.ReferenceEquals(second, null)) { return(true); } else if ((Object.ReferenceEquals(first, null) && !Object.ReferenceEquals(second, null)) || (!Object.ReferenceEquals(first, null) && Object.ReferenceEquals(second, null))) { return(false); } else { if (!first.IsCompatibleWith(second.Type)) { throw new Exception("Incompatible property types."); } bool result = false; switch (first.Type) { case PropertyType.Bool: case PropertyType.Byte: case PropertyType.Int32: case PropertyType.Int64: case PropertyType.Enum: case PropertyType.TimeSpan: case PropertyType.DateTime: case PropertyType.Reference: if (first.value.LongValue == second.value.LongValue) { result = true; } break; case PropertyType.Float: if (first.value.FloatValue == second.value.FloatValue) { result = true; } break; case PropertyType.String: if (first.value.StringValue == second.value.StringValue) { result = true; } break; case PropertyType.ReferenceVector: result = CompareHelper.CompareLists(first.value.LongValues, second.value.LongValues, true); break; case PropertyType.BoolVector: case PropertyType.ByteVector: case PropertyType.EnumVector: case PropertyType.Int32Vector: case PropertyType.Int64Vector: case PropertyType.DateTimeVector: result = CompareHelper.CompareLists(first.value.LongValues, second.value.LongValues, false); break; case PropertyType.FloatVector: result = CompareHelper.CompareLists(first.value.FloatValues, second.value.FloatValues); break; case PropertyType.StringVector: result = CompareHelper.CompareLists(first.value.StringValues, second.value.StringValues); break; } return(result); } }