You are comparing the password as follows:
x.Senha.Equals(senha, StringComparison.Ordinal)
According to the documentation, the StringComparison.Ordinal
makes the comparison case-sensitive, that is, case-sensitive.
When you are comparing the user, you are doing so:
x.Login.Equals(login, StringComparison.OrdinalIgnoreCase)
I do not know the need to use OrdinalIgnoreCase
in your case. I always use StringComparison.InvariantCultureIgnoreCase
for this purpose, like this:
x.Login.Equals(login, StringComparison.InvariantCultureIgnoreCase)
If you can, read " Difference between InvariantCulture and Oridinal string comparison
The code you posted already does what you want. This evaluates :
"login" == "Login" > true (é case-insensitive)
"senha" == "Senha" > false (é case-sensitive)