ApiVersionSetIdComparer.cs

using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
 
namespace APIManagementTemplate
{
    public class ApiVersionSetIdComparer : IEqualityComparer<JToken>
    {
        private const string Properties = "properties";
        private const string ApiVersionSetId = "apiVersionSetId";
 
        public bool Equals(JToken x, JToken y)
        {
            if (x == null && y == null)
                return true;
            if (x == null || y == null)
                return false;
            if (x[Properties] == null || y[Properties] == null)
                return false;
            return x[Properties].Value<string>(ApiVersionSetId)
                .Equals(y[Properties].Value<string>(ApiVersionSetId));
        }
 
        public int GetHashCode(JToken obj)
        {
            if (obj[Properties] == null)
                return obj.GetHashCode();
            return (obj[Properties].Value<string>(ApiVersionSetId) ?? String.Empty).GetHashCode();
        }
    }
}