BTDB.EventStoreLayer.EnumTypeDescriptor.UlongValueToStringFlags C# (CSharp) Method

UlongValueToStringFlags() private method

private UlongValueToStringFlags ( ulong value ) : string
value ulong
return string
        string UlongValueToStringFlags(ulong value)
        {
            var workingValue = value;
            var index = _pairs.Count - 1;
            var stringBuilder = new StringBuilder();
            var isFirstText = true;
            while (index >= 0)
            {
                var currentValue = _pairs[index].Value;
                if ((index == 0) && (currentValue == 0L))
                {
                    break;
                }
                if ((workingValue & currentValue) == currentValue)
                {
                    workingValue -= currentValue;
                    if (!isFirstText)
                    {
                        stringBuilder.Insert(0, ", ");
                    }
                    stringBuilder.Insert(0, _pairs[index].Key);
                    isFirstText = false;
                }
                index--;
            }
            if (workingValue != 0L)
            {
                return UlongValueToStringAsNumber(value);
            }
            if (value != 0)
            {
                return stringBuilder.ToString();
            }
            if ((_pairs.Count > 0) && (_pairs[0].Value == 0))
            {
                return _pairs[0].Key;
            }
            return "0";
        }