我有一个方法,我正在发送用户名、密码、电子邮件与此方法,并且我正在使用 Linq 查询是否有相同的记录。但是当用户发送空值时,它与 linq 实体空值不同,它返回 false。
代码在这里:
public int GetTheUserID(string login, string pass, bool isAD)
{
try
{
if (pass == null) { }
if (query.Any()) query = query.Where(x => (x.LoginName == login) && (x.Password_ == pass) && (isAD == x.ADUser) && (x.Deleted == false));
else query = Entity.SecurityUsers.Where(x => (x.LoginName == login) && (x.Password_ == pass) && (isAD == x.ADUser) && (x.Deleted == false));
if (query.Any())
{
singleresult.TransactionResult = query.FirstOrDefault();
return singleresult.TransactionResult.ID;
}
else return 0;
}
catch (Exception ex)
{
return 0;
}
}
例如,如果密码为 null ,并且此用户凭据和密码为 null 的记录相同,则“x.Password_ == pass”不返回 true。
这里 pass 可以有值,也可以为 null。我不能写“x.Password is null”或“x.password == null”,但最后一个没有问题,为什么我的有?