【发布时间】:2021-11-02 23:57:28
【问题描述】:
我有一个 if 语句与 Linq 中的查询对齐以在我的应用程序中创建登录名,但是,代码工作不好,当查询不选择任何记录时,.Count() 它等于零并且它有道理,但是在 if 中,代码永远不会到达 else 部分,看,这是我的代码:
var UserLogin = from m in _context.User where m.Username.Contains(this.Username) & m.Password.Contains(this.Password) select m.Username;
this.Username = string.Empty;
this.Password = string.Empty;
if(UserLogin.Count() != 0)
{
//HttpContext.Session.SetString("Username", UserLogin.First());
UsernameLogged = UserLogin.First();
}
else
{
Console.WriteLine("Sisa: " + UsernameLogged);
this.Username = string.Empty;
this.Password = string.Empty;
UsernameLogged = string.Empty;
Console.WriteLine(UsernameLogged);
}
【问题讨论】:
-
不完全确定您要做什么。你得到一个错误还是什么?永远无法到达 else 部分的唯一其他原因是 if 块正在执行。在运行时检查 UserLogin.Count() 的值,你可能会得到一个线索
-
您是否手动将代码与您的 Linq 查询对齐?不要那样做,这很混乱。
-
顺便说一句,您对用户名和密码的比较存在严重的安全漏洞。
-
m.Password.Contains(this.Password)- 请不要将密码保存为纯文本。 散列它们。