public int CompareTo(object obj) { if (!(obj is Category)) { return(1); // ?? } var categoryObj = (Category)obj; var nameComparison = (string.Compare(ProductName, categoryObj.ProductName, StringComparison.InvariantCulture)); var typeComparison = Type.CompareTo(categoryObj.Type); var topicComparison = Topic.CompareTo(categoryObj.Topic); if (nameComparison != 0) { return(nameComparison); } if (typeComparison != 0) { return(typeComparison); } if (topicComparison != 0) { return(topicComparison); } return(0); }
public int CompareTo(Category other) { if (other == null) { return(0); } var messageCompare = String.Compare(Message, other.Message, StringComparison.Ordinal); if (messageCompare == 0) { var typeCompare = Type.CompareTo(other.Type); if (typeCompare == 0) { return(Topic.CompareTo(other.Topic)); } else { return(typeCompare); } } else { return(messageCompare); } }
public int CompareTo(object obj) { if (obj == null) { return(1); } if (obj is Category) { var cobj = (Category)obj; var n = Name?.CompareTo(cobj.Name) ?? -1; var ty = Type.CompareTo(cobj.Type); var to = Topic.CompareTo(cobj.Topic); var result = n != 0 ? n : (ty != 0 ? ty : to); return(result); } else { throw new ArgumentException($"Can not compate Category with {obj.GetType().Name}"); } }