Get data at beginning or before use it I have two style of code but don't know which is better or maybe you could recommend the better one.

The good part of first one is every if else branches return something and the process will stop at there but the bad part is even the Captcha is invalid I still need to query the DisalbeUser() and BlackList()

        bool isValidateCaptcha = ValidateCaptcha();

        bool isDisableUser = DisableUser();

        bool isInblackList = BlackList();

        if (isValidateCaptcha)
        {
            return Ok(new
            {
                IsSuccess = false,
                InvalidCode = LoginInvalidCode.CaptchaInvalid
            });
        }
        else if (isDisableUser)
        {
            return Ok(new
            {
                IsSuccess = false,
                InvalidCode = LoginInvalidCode.DisableAccountAndInDisableGroup
            });
        }
        else if (isInblackList)
        {
            return Ok(new
            {
                IsSuccess = false,
                InvalidCode = LoginInvalidCode.InLoginBlackList
            });
        } 
        else
        {
            return Ok(new
            {
                IsSuccess = true,
            }); 
        }


And the second style is like below

        bool isValidateCaptcha = ValidateCaptcha();

        if (isValidateCaptcha)
        {
            return Ok(new
            {
                IsSuccess = false,
                InvalidCode = LoginInvalidCode.CaptchaInvalid
            });
        }

        bool isDisableUser = DisableUser();

        if (isDisableUser)
        {
            return Ok(new
            {
                IsSuccess = false,
                InvalidCode = LoginInvalidCode.DisableAccountAndInDisableGroup
            });
        }

        bool isInblackList = BlackList();

        if (isInblackList)
        {
            return Ok(new
            {
                IsSuccess = false,
                InvalidCode = LoginInvalidCode.InLoginBlackList
            });
        }

        return Ok(new
        {
            IsSuccess = true,
        });
Concerning 


  which one is better


I would prefer the first one, as you can see your values from the beginning, then follow the if-else logic.

However, none if these are very readible!

Naming

Your variable and method names are very misleading. BlackList() looks like you call a constructor. Method names should be verbs (or start with one).

Your variable naming scheme would actually fit for your methods, as IsInBlackList() is the typical naming for methods that return boolean (true/false) values. The variables could then just be called var inBlackList = IsInBlackList().

Logic

It is not clear whether your validation cases are mutually exclusive. Can a captcha be valid and still the user be in the blacklist?

Concerning this code: if (isValidateCaptcha) ... IsSuccess = false, ...
Your variable name implies that it is true if the captcha is valid (which it should, however a better name might be isCaptchaValid). But then you set IsSuccess to false, which makes it seem like your method returns false if the captcha is true, making the logic very hard to understand without looking into the method.

Conciseness

Do you even need these variables? Your variable names are almost identical to your method names (semantically, considering the changes suggested above).

Consider this:

if (IsCaptchaValid()) // replaced the variable with the method call
{
    return Ok(new
    {
        IsSuccess = false,
        InvalidCode = LoginInvalidCode.CaptchaInvalid
    });
}


This way your code becomes shorter and more readible, and your method names should show their intent anyways.

Redundance

This part


return Ok(new
{
    IsSuccess = ...
    InvalidCode = ...
});



appears multiple times with very minor differences. You could increase readability by merging it into one.

For example

LoginInvalidCode invalidCode;
if (!IsCaptchaValid())
{
    invalidCode = LoginInvalidCode.CaptchaInvalid;
}
else if (IsUserDisabled()) {
    invalidCode = LoginInvalidCode.DisableAccountAndInDisableGroup;
}
else if (IsInBlackList()) {
    invalidCode = LoginInvalidCode.InLoginBlackList;
}

var success = invalidCode != null;

return Ok(new { IsSuccess = success, InvalidCode = invalidCode });